服务器名
|
IP
|
系统
|
MySQL
|
odd.example.com
|
192.168.1.116
|
rhel-5.8
|
5.5.16
|
even.example.com
|
192.168.1.115
|
rhel-5.8
|
5.5.16
|
假设两台服务器都是新上的,新机器,要同步的库是 db_rocky
如果说主服务器是已经上的,mysqldump -u root -p -h XXX.XXX.XXX.XXX -F -l --master-data=1 --databases test > test.sql
通过热备备份之前的数据,而且有一个好处就是配置master_log_pos的时候不用看master的 直接从test.sql来看就可以了
打开主服务器的二进制日志文件记录操作记录
从服务器能够从主服务器取二进制日志文件
从服务器重放事件并应用在自己的服务器上
(一) 修改 /etc/my.cnf 配置文件,为其添加以下内容:
在 ODD 上
-
[mysqld]
-
....
-
log-bin=mysql-bin
-
server-id=116
-
sync_binlog=1 //每次提交事务的时候把二进制日志的内容同步到磁盘上
在 EVEN 上
-
[mysqld]
-
....
-
log-bin=mysql-bin
-
server-id=115
-
sync_binlog=1
配置完成之后分别重启服务器ODD EVEN 上的mysql服务
(二) 创建同步用户
在 ODD上创建同步账号是为了能够去主服务器取二进制日志
replication slave
replication client 为什么用这两个权限
-
mysql> grant replication slave,replication client on *.* to 'water'@'192.168.1.%' identified by 'cdio2010';
-
Query OK, 0 rows affected (0.00 sec)
-
mysql> flush privileges;
-
Query OK, 0 rows affected (0.00 sec)
(三)查看主服务器ODD上二进制日志文件状态
在ODD
-
mysql> show master status \G
-
*************************** 1. row ***************************
-
File: mysql-bin.000007
-
Position: 438
-
Binlog_Do_DB: db_rocky
-
Binlog_Ignore_DB: mysql
-
1 row in set (0.00 sec)
(四)在从服务器EVEN上用change master to语句指定同步位置 :
在EVEN对应的user和password都是grant授权的账号
-
mysql> change master to
-
-> master_host='192.168.1.116',
-
-> master_user='water',
-
-> master_password='cdio2010',
-
-> master_log_file='mysql-bin.000007',
-
-> master_log_pos=438;
-
Query OK, 0 rows affected (0.15 sec)
注:用change master to 不用配置my.cnf文件的原因是这样从服务器也可以成为主服务器,如果更改了my.cnf文件,要想生效必须得重新启动,而用前者却不用用stop slave就可以
master_log_file,master_log_pos由上面主服务器查出的状态值中确定
master_log_file对应File,master_log_pos对应Position
在从服务器EVEN上启动线程 stop slave / reset slave 停止/重置
-
mysql> start slave;
-
Query OK, 0 rows affected (0.00 sec)
查看从服务器EVEN上状态 : show slave status / show processlist 可以通过进程来查看
-
EVEN上:
-
-
mysql> show slave status\G
-
*************************** 1. row ***************************
-
主要关注以下 2 个参数:
-
...
-
...
-
Slave_IO_Running: Yes
-
Slave_SQL_Running: Yes
-
...
-
...
-
mysql> show processlist \G
-
㈦ 测试
-
ODD 上
-
-
mysql> show databases;
-
+--------------------+
-
| Database |
-
+--------------------+
-
| information_schema |
-
| db_rocky |
-
| mysql |
-
| performance_schema |
-
| test |
-
+--------------------+
-
5 rows in set (0.00 sec)
-
-
mysql> use db_rocky;
-
Database changed
-
mysql> show tables;
-
Empty set (0.00 sec)
-
-
mysql> create table water (id int);
-
Query OK, 0 rows affected (0.04 sec)
-
-
mysql> insert into water values(1);
-
Query OK, 1 row affected (0.01 sec)
-
-
mysql> commit;
-
Query OK, 0 rows affected (0.00 sec)
-
-
-
在 EVEN 上
-
-
mysql> show tables;
-
+--------------------+
-
| Tables_in_db_rocky |
-
+--------------------+
-
| t_rocky |
-
| water |
-
+--------------------+
-
2 rows in set (0.00 sec)
-
-
mysql> select * from water;
-
+------+
-
| id |
-
+------+
-
| 1 |
-
+------+
-
1 row in set (0.00 sec)
-
测试成功
阅读(2245) | 评论(0) | 转发(0) |