1、准备环境 思路: 1、两个以上节点(多实例) 3307:master 3308:slave1 3309:slave2 2、主库binlog开启,从库开启relay-log(默认在数据目录下生成) vim /data/3307/my.cnf log-bin=/data/3307/mysql-bin binlog_format=row
3、server-id不同 [root@db02 data]# cat /data/3307/my.cnf |grep server-id server-id=3307 [root@db02 data]# cat /data/3308/my.cnf |grep server-id server-id=3308 [root@db02 data]# cat /data/3309/my.cnf |grep server-id server-id=3309 4、关闭数据库的自动域名解析 每个节点都加入以下配置: skip-name-resolve 5、启动多实例 mysqld_safe --defaults-file=/data/3307/my.cnf & mysqld_safe --defaults-file=/data/3308/my.cnf & mysqld_safe --defaults-file=/data/3309/my.cnf &
6、主库创建复制账户 连接到主库: mysql -S /data/3307/mysql.sock grant replication slave on . to repl@'10.0.0.%' identified by '123';
7、从库数据的追加 (1)不需要追加的情况 主和从同时搭建的新环境,就不需要备份主库数据,恢复到从库了,直接从第一个binlog(mysql-bin.000001)的开头位置(120) (2)如果主库已经工作了很长时间了,我们一般需要备份主库数据,恢复到从库,然后从库从备份的时间点起自动进行复制 重点针对第二种情况进行演示: 备份主库: mysqldump -S /data/3307/mysql.sock -A -R --triggers --master-data=2 --single-transaction >/tmp/full.sql sed -n '22p' /tmp/full.sql -- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000002', MASTER_LOG_POS=325 恢复到从库: mysql -S /data/3308/mysql.sock mysql> set sql_log_bin=0; mysql> source /tmp/full.sql
8、从库开启主库: mysql -S /data/3308/mysql.sock
help change master to
CHANGE MASTER TO MASTER_HOST='10.0.0.52', MASTER_USER='repl', MASTER_PASSWORD='123', MASTER_PORT=3307, MASTER_LOG_FILE='mysql-bin.000002', MASTER_LOG_POS=325;
开启主从(开启IO和SQL线程): start slave;
9、查看主从状态:
show slave status\G
Slave_IO_Running: Yes Slave_SQL_Running: Yes
10、主从重要状态信息介绍
show slave status\G Slave_IO_Running: Yes Slave_SQL_Running: Yes Last_IO_Errno: 0 Last_IO_Error: Last_SQL_Errno: 0 Last_SQL_Error: