1. 主从复制简介
1.1. 基于二进制日志复制的 1.2. 主库的修改操作会记录二进制日志 1.3. 从库会请求新的二进制日志并回放,最终达到主从数据同步 1.4. 主从复制核心功能: 辅助备份,处理物理损坏 扩展新型的架构:高可用,高性能,分布式架构等
2. 主从复制前提(搭建主从的过程)
## 2.1 两台以上mysql实例 ,server_id,server_uuid不同 ## 2.2 主库开启二进制日志 ## 2.3 专用的复制用户 ## 2.4 保证主从开启之前的某个时间点,从库数据是和主库一致(补课) ## 2.5 告知从库,复制user,passwd,IP port,以及复制起点(change master to) ## 2.6 线程(三个):Dump thread IO thread SQL thread 开启(start slave)
3. 主从复制搭建
3.1 修改my.cnf ,开启主库二进制日志功能
vim /etc/my.cnf log_bin=/data/mysql/binlog/mysql-bin
3.2 启动两个节点
[root@db01 3307]# systemctl start mysqld3307 [root@db01 3307]# systemctl start mysqld [root@db01 3307]# ps -ef |grep mysqld mysql 3684 1 4 09:59 ? 00:00:00 /opt/mysql/bin/mysqld --defaults-file=/etc/my.cnf mysql 3719 1 7 09:59 ? 00:00:00 /opt/mysql/bin/mysqld --defaults-file=/data/3307/my.cnf [root@db01 3307]# mysql -S /data/3307/mysql.sock -e "select @@server_id"
3.3 主库中创建复制用户
grant replication slave on *.* to repl@‘%‘ identified by ‘123‘; select user,host from mysql.user;
3.4 备份主库并恢复到从库
mysqldump -S /data/3307/mysql.sock -A --master-data=2 --single-transaction -R --triggers >/backup/full.sql -- CHANGE MASTER TO MASTER_LOG_FILE=‘mysql-bin.000001‘, MASTER_LOG_POS=653;
mysql -S /data/3307/mysql.sock
set sql_bin_log=0; source /backup/full.sql
3.5 告知从库关键复制信息
ip port user password binlog position [root@db01 3307]# mysql -S /data/3307/mysql.sock db01 [mysql]>help change master to 可查到配置从库的信息 CHANGE MASTER TO MASTER_HOST=‘192.168.0.104‘, MASTER_USER=‘repl‘, # 主库中创建的那个复制用户 MASTER_PASSWORD=‘123‘, MASTER_PORT=3306, MASTER_LOG_FILE=‘mysql-bin.000010‘, # 以下两行数据从上面那个全备的文件中查找 MASTER_LOG_POS=2652, MASTER_CONNECT_RETRY=10; # 设定的重连次数
# 整理好以上sql语句后,在从库执行下即可。
3.6 开启主从专用线程
start slave ;
复制线程有两个(io和sql),从库执行该命令后会同时开启这两个线程
3.7 检查复制状态
db01 [mysql]>show slave status \G
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
3.8 异常的处理步骤
如果需要修改change master to的信息则需要先停掉slave;
1. stop slave; 2. reset slave all; 3. change master to xxxxxxxxxxxx;
4. start slave;