-+―――――+――――――+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +――――――+―――-+―――――+――――――+ | mysql-bin.000004 | 106 | test1,netseek | mysql,test | +――――――+―――-+―――――+――――――+ //(同步之前如果怀疑主从数据不同步可以采取:上面冷备份远程拷贝法或者在从服务器上命行 同步方法)在从服务器执行MySQL 命令下: mysql> SLAVE STOP; #先停止slave服务 mysql> CHANGE MASTER TO MASTER_LOG_FILE=’updatelog.000004′,MASTER_LOG_ POS=106; // 根据上面主服务器的show master status的结果,进行从服务器的二进制数据库记录回归, 达到同步的效果 mysql> SLAVE START; #启动从服务器同步服务 // 用show slave statusG;看一下从服务器的同步情况 mysql> SHOW SLAVE STATUSG; Slave_IO_Running: Yes Slave_SQL_Running: Yes 如果都是yes,那代表已经在同步. 8、测试 // 在主服务器上建立一个表 mysql> use test1; mysql> create table name(id int(4),name varchar(20)); mysql> show tables; +――――― + | Tables_in_test1 | +――――― + | name | | user | +――――― + 2 rows in set (0.01 sec) // 在从服务器上查询 mysql> use test1; mysql> show tables; +――――― + | Tables_in_test1 | +――――― + | name | | user | +――――― + 2 rows in set (0.00 sec) 单项复制试验成功!!!! 四、双向同步配置 1、修改原slave 服务器配置 192.168.20.102 // 配置原slave服务器/etc/my.cnf文件,添加红字的内容: server-id=2 # 从服务器ID号,不要和主ID相同 master-host=192.168.20.155 # 指定主服务器IP地址 master-user=replication # 指定在主服务器上可以进行同步的用户名 master-password=123456 # 密码 master-port=3306 # 同步所用端口 master-connect-retry=60 # 断点从新连接时间 replicate-ignore-db=mysql # 屏蔽对mysql库的同步 replicate-do-db=test1 # 同步的数据库的名称 log-bin=/var/log/mysql/updatelog # 设定生成log文件名 binlog-do-db=test1 # 设置同步数据库名 binlog-ignore-db=mysql # 避免同步mysql用户配置,以免不必要的麻烦 2、创建更新日志的目录并给mysql用户的权限 # mkdir /var/log/mysql # chown -R mysql.mysql /var/log/mysql 3、重新启动mysql服务,创建一个同步专用账号 # service mysqld restart //给与从服务器用户replication的同步权限 # mysql -uroot -p123456 mysql> GRANT REPLICATION SLAVE ON *.* TO ‘replication’@’192.168.20.%’IDENTIFIED BY ’123456′; //刷新权限,使设置生效 mysql>Flush privileges; 4、修改原master配置文件 192.168.20.101 // 配置原master务器/etc/my.cnf文件,添加红字的内容: log-bin=mysql-bin # 启动二进制日志系统 server-id=1 # 本机数据库ID 标示为主 log-bin=/var/log/mysql/updatelog # 设定生成log文件名,这里的路径没有mysql 目录要手动创建并给于它mysql用户的权限。 binlog-do-db=test1 # 二进制需要同步的数据库名 binlog-ignore-db=mysql,test # 避免同步mysql用户配置,以免不必要的麻烦 master-host=192.168.20.128 # 设置从原slave数据库同步更新 master-user=replication # 更新用户 master-password=123456 # 密码 master-port=3306 # 端口 replicate-do-db=test1 # 需要更新的库 // 重启mysql服务 # service mysqld restart // 在B服务器查询 192.168.20.102 # mysql -uroot -p123456 mysql> SHOW MASTER STATUS; +――――――+―――-+―――― +――――――+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +――――――+―――-+―――― +――――――+ | updatelog.000001 | 106 | test1 | mysql | +――――――+―――-+―――― +――――――+ 1 row in set (0.00 sec) // 在A服务器查询 192.168.20.101 # mysql -uroot -p123456 mysql> SHOW MASTER STATUS; // 先停止slave服务 mysql> SLAVE STOP; mysql> CHANGE MASTER TO MASTER_HOST=’192.168.20.128′,MASTER_USER=’repli cation’,MASTER_PASSWORD=’123456′,MASTER_PORT=3306,MASTER_LOG_FILE=’upda telog.000001′,MASTER_LOG_POS=106; // 根据上面主服务器的show master status的结果,进行从服务器的二进制数据库记录回归, 达到同步的效果 // 启动B服务器同步服务 192.168.20.102 mysql> SLAVE START; 5、验证配置 // 在A服务器上进入mysql命令行 192.168.20.101 mysql> SHOW SLAVE STATUSG; Slave_IO_Running: Yes Slave_SQL_Running: Yes 此处Slave_IO_Running ,Slave_SQL_Running 都应该是yes,表示从库的I/O,Slave_SQL线程都 正确开启.表明数据库正在同步。 // 在B服务器上进入mysql命令行 192.168.20.102 mysql> SHOW SLAVE STATUSG; Slave_IO_Running: Yes Slave_SQL_Running: Yes 此处Slave_IO_Running ,Slave_SQL_Running 都应该是yes,表示从库的I/O,Slave_SQL线程都 正确开启.表明数据库正在同步。 6、测试 // 在A服务器上建立一个表 192.168.20.101 mysql> use test1; |