设置同步之前可以将主服务器的数据库手动还原到从服务器的数据库保持两边的数据库名称和数据一致
1.开启a和b服务器上MySQL同步账号远程访问权限
GRANT ALL PRIVILEGES ON *.* TO 'user'@'%' IDENTIFIED BY 'password';
flush privileges;
2.a服务器MySQL配置文件[mysqld]最后添加(server-id主从不能一样,binlog-do-db和replicate-do-db为主从数据库名称)
log-bin=mysql-bin
binlog_format=mixed
server-id = 10
binlog-do-db = dbname
replicate-do-db = dbname
log-slave-updates
3.b服务器MySQL配置文件[mysqld]最后添加
log-bin=mysql-bin
binlog_format=mixed
server-id = 20
binlog-do-db = dbname
replicate-do-db = dbname
log-slave-updates
4.进入a服务器终端进入MySQL命令行
mysql -u root -p
5.在a服务器MySQL命令行内添加b服务器MySQL同步账号权限信息
grant replication slave on *.* to 'user'@'b服务器ip' identified by 'password';
FLUSH PRIVILEGES;
6.查询a服务器MySQL信息,记录下File、Positon的值(例如mysql-bin.000019、154)
show master status;
6.(进入b服务器终端进入MySQL命令行)在b服务器MySQL命令行内添加a服务器MySQL同步账号权限信息
grant replication slave on *.* to 'user'@'a服务器ip' identified by 'password';
FLUSH PRIVILEGES;
7.在b服务器MySQL命令行内设置同步(mysql-bin.000019、154为a服务器查询到的信息)
change master to master_host='a服务器ip',master_user='user',master_password='password',master_log_file='mysql-bin.000019',master_log_pos=154;
start slave;
8.在b服务器MySQL命令行内查询同步状态
show slave status\G;
查询结果类似:
Master_Log_File: mysql-bin.000019 --a服务器的File信息
Read_Master_Log_Pos: 154 --a服务器的Positon信息
Relay_Log_File: VM-20-9-centos-relay-bin.000007
Relay_Log_Pos: 320
Relay_Master_Log_File: mysql-bin.000019
Slave_IO_Running: Yes --必须为yes
Slave_SQL_Running: Yes --必须为yes
Replicate_Do_DB: dbname --同步的数据库名称
Replicate_Ignore_DB:
9.此时即设置好了a服务器向b服务器的单向同步,a服务器数据库dbname的操作会同步到b服务器,但b服务器的操作不会同步到a服务器
如需设置双向同步,在b服务器MySQL命令行内查询b服务器MySQL信息File、Positon的值(例如mysql-bin.000028、15476)
show master status;
10.在a服务器MySQL命令行内设置同步
change master to master_host='b服务器ip',master_user='user',master_password='password',master_log_file='mysql-bin.000028',master_log_pos=15476;
start slave;
11.查看同步状态,此时即设置好了双向同步
show slave status\G;
12.如需修改同步设置,例如修改a数据库的同步IP、账号、密码,执行以下命令停止同步,再按步骤10操作
STOP SLAVE IO_THREAD;