首页 > 数据库 > MySQL > 正文

MySQL 主从复制资料集合

2022-07-30 23:11:53
字体:
来源:转载
供稿:网友
        MySQL 主从复制资料汇总:

       该过程的第一部分就是master记录二进制日志。在每个事务更新数据完成之前,master在二日志记录这些改变。MySQL将事务串行的写入二进制日志,即使事务中的语句都是交叉执行的。在事件写入二进制日志完成后,master通知存储引擎提交事务。
  
       下一步就是slave将master的binary log拷贝到它自己的中继日志。首先,slave开始一个工作线程——I/O线程。I/O线程在master上打开一个普通的连接,然后开始binlog dump process。Binlog dump process从master的二进制日志中读取事件,如果已经跟上master,它会睡眠并等待master产生新的事件。I/O线程将这些事件写入中继日志。
  
   mysql主从同步应用场景
(1):数据分布
 
(2):负载均衡
 
(3):备份
 
(4):高可用和容错
 
 
 
     搭建mysql主从的环境要求
主从系统要保持一致:包括数据库版本,操作系统版本,磁盘IO磁盘容量,网络带宽等。
 
[root@data02 ~]# cat /etc/redhat-release
 
CentOS release 6.2 (Final)
 
[root@data02 ~]#
 
 
 
主库master
 
从库slave
 
OS系统版本
 
CentOS release 6.2 (Final)
 
CentOS release 6.2 (Final)
 
数据库版本
 
5.6.12-log
 
5.6.12-log
 
磁盘容量
 
50G
 
30G
 
主机ip地址
 
192.168.52.129
 
192.168.52.130
 
端口
 
3306
 
3306
 
内存
 
1G
 
1G
 
   开始搭建mysql主从复制
 建立复制账号
  
GRANT REPLICATION SLAVE,RELOAD,SUPER ON *.*TO repl@'192.168.52.130' IDENTIFIED BY 'repl_1234';
 
  手动同步数据
因为当开始搭建的时候,主库上已经有了数据,所以要先把主库已经存在的数据先手动同步迁移到从库上面去。搭建过程中,禁止在主库从库上进行任何对数据库的ddl、dml等数据操作。
 
这里可以用mysqldump也可以用xtrabackup导出主库上面的数据:
 
(4.2.1):xtrabackup方式
在主库上192.168.52.129上面进行数据备份,备份命令,要添加--safe-slave-backup参数:
 
innobackupex --user=backup--password="123456" --host=192.168.52.129  --socket=/tmp/mysql.sock--defaults-file=/etc/my.cnf /data/backups/mysql/repl/backup_slave --parallel=3--safe-slave-backup --no-timestamp
 
去备份目录/data/backups/mysql/repl/backup_slave查看备份时候的主库二进制信息,需要根据这个二进制信息来进行数据同步,如下所示:
 
[root@data01 test]# cd/data/backups/mysql/repl/backup_slave
 
[root@data01 backup_slave]#  more xtrabackup_binlog_info
 
mysql-bin.000147    120
 
[root@data01 backup_slave]#
 
压缩备份文件并且传输到从库192.168.52.130上面:
 
tar -zcvf backup_slave.tar.gz backup_slave/
 
scp backup_slave.tar.gz192.168.52.130:/tmp/
 
 
 
(4.2.2)mysqldump方式
在主库上192.168.52.129上做基于主库做数据备份
 
/usr/local/mysql/bin/mysqldump -ubackup--password=123456 --host=192.168.52.129 --single-transaction --flush-logs --master-data=2 --add-drop-table--create-option --quick --extended-insert=false --set-charset --disable-keys -A> /tmp/alldb.sql
 
压缩备份文件,传输到从库192.168.52.130上面去。
 
gzip /tmp/alldb.sql
 
scp /tmp/alldb.sql.gz 192.168.52.130:/tmp/
 
 
 
 配置master库(192.168.52.129)
Vim /etc/my.cnf
 
server-id=129                                   # Server ID
 
log-bin =/home/data/mysql/binlog/mysql-bin
 
binlog-ignore-db=mysql                          # No sync databases
 
binlog-ignore-db=test                           # No sync databases
 
binlog-ignore-db=information_schema             # No sync databases
 
binlog-ignore-db=performance_schema
 
binlog-do-db=user_db

(编辑:错新网)

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表