-
1、两台以上的Mysql实例(独立的主机或者多实例),保证server_id(>0)、server_uuid不同
-
2、主库开启二进制日志(binlog)、(主从服务器同步时间)
-
3、主库要开启一个专业的复制用户(给replication slave权限)
-
4、“补课的操作”,如果要新加一个从库,那么要把主库的数据备份,然后恢复到从库。
-
5、通知从库可以进行自动复制,确认复制的起点(使用命令change master to 主库ip port user password 起点)
-
6、在从库启动专用的复制线程(start slave)
2、步骤
-
1、准备实例,且确保server_id、server_uuid不同(主库)
命令:mysql -S /data/3306/mysql.sock -e "select @@server_id"
命令:mysql -S /data/3307/mysql.sock -e "select @@server_uuid"
-
2、主库开启binlog日志(主库)
命令mysql -S 3306/mysql.sock -e "select @@ log_bin"; #1代表开启
要改的配置文件是my.cnf---->{server_id=7 log_bin=/data/3306/mysql-bin}
-
3、开启一个专用的复制用户(主库)
创建且授权命令:mysql -S 3306/mysql.sock -e ""grant replication slave on . to tzh@'%' identified by 'root'";
确认用户是否存在:mysql -S 3306/mysql.sock -e "select user,host from mysql.user";
-
全备份(主库):mysqldump -S /data/3306/mysql.sock -A --master-data=2 --single-transaction -R -E --triggers --max-allowed-packet=64M>/tem/full.sql
-----master-data=2 记录备份时的二进制日志
vim full.sql(查看同步到那个日志文件了)
全备份1:mysqldump -S /data/3306/mysql.sock -A --master-data=2 --single-transaction -R --triggers >/backup/full.sql
恢复(从库):登录到从库(1、mysql -S /data/3307/mysql.sock
临时关闭二进制的记录(2、set sql_log_bin=0)
恢复数据(3、source /tmp/full.sql
恢复二进制的记录(4、set_sql_log_bin=1
-
5、通知从库可以进行自动复制(从库)
查看主库MySQL服务器二进制文件名与位置(mysql>SHOW MASTER STATUS;
查看复制命令(help change master to
复制的命令:CHANGE MASTER TO MASTER_HOST='192.168.1.30', MASTER_USER='repl', MASTER_PASSWORD='root', MASTER_PORT=3307, MASTER_LOG_FILE='mysql-bin.000002', MASTER_LOG_POS=4724323, MASTER_CONNECT_RETRY=10;(更改对应的参数即可)
-
6、启动复制线程(从库)IO线程,SQL线程
start slave
查看这两个线程是否启动成功(mysql -S /mysql/3308/mysql.sock -e "show slave statusG"| grep Running
原理图