mysql主从同步

1,mysql主从复制原理

1)主从复制结构图

mysql主从同步_第1张图片
image.png

2)master dump线程: 对binlog加锁,发送binlog内容。(包含binlog日志、binlog文件和position)
slave I/O线程: start slave;后,创建I/O线程,读取master的binlog,保存在本地relay log中。
slave sql线程: 读取relay log内容,解析成具体sql执行。

2,XtraBackup主从同步复制,数据库备份。

1)安装 XtraBackup
https://www.percona.com/doc/percona-xtrabackup/LATEST/installation/yum_repo.html
重要:主库/etc/my.cnf增加参数 server_id=1 log-bin=mysql-master-bin 从库可以直接拷贝主库/etc/my.cnf,修改server_id=2
2)主库执行备份操作
innobackupex --defaults-file=/etc/my.cnf --user=root --password='root'
--slave-info --no-timestamp
/var/data/20170613 > 201706013_backup.log 2>&1日志输出到文件
备份myisam表, 会有加锁的操作。
3)压缩、scpc操作
tar -cvf 20170613.tar 20170613/
gzip 20170613.tar
scp -P user@ip:/home/zhanqi/20170613.tar ./
4)从库准备操作
service mysqld stop
mv 20170613 /var/data/mysql
innobackupex --apply-log /var/data/mysql
chown -R mysql:mysql /var/data/mysql
vim /etc/my.cnf
service mysqld start
5) 从库追主库(从binlog文件的pos点开始)
CHANGE MASTER TO
MASTER_HOST = '47.94.19.26',// master需要增加slave相关的用户。
MASTER_USER = 'root',
MASTER_PASSWORD = 'xxx',
MASTER_PORT = 3306,
MASTER_LOG_FILE = 'mysql-master-bin.000001',
MASTER_LOG_POS = 154;
6)开启主从复制,查看主从状态。
start slave;
show master status

mysql主从同步_第2张图片
image.png

show slave status
mysql主从同步_第3张图片
image.png

3,主从搭建遇到的问题

1)Last_SQL_Error: Error 'Cannot load from mysql.procs_priv.
mysql_upgrade -u root -p
stop slave;
flush privileges;
start slave;
2)数据库归档手段
设置只读:set global super_read_only = 1; read_only对super用户无效
bin_log不开启:set sql_log_bin=0; 主库执行操作,不复制到从库。如旧的主库删除大表(腾空间),不影响归档库。

你可能感兴趣的:(mysql主从同步)