MySQL复制(二)--基于二进制日志文件(binlog)配置复制
基础环境:
主库 | 从库 | |
服务器IP地址 | 192.168.10.11 | 192.168.10.12 |
版本 | 5.7.24 | 5.7.24 |
已存在的数据库 |
mysql> show databases; |
mysql> show databases; |
(一)主数据库复制相关参数配置(主)
如果要使用复制功能,则必须开启二进制日志,如果要开启二进制日志,需要设置server-id参数,启动二进制日志需要重启数据库实例。最少的参数配置如下:
[mysqld]
log-bin=mysql-bin
server-id=
但在实际使用中,还需配置其它参数,用于优化配置:
- 如果未设置 server_id(或将其显式设置为其默认值0),则主服务器将拒绝从属服务器的任何连接;
- 为了在InnoDB事务复制设置中获得最大的持久性和一致性,应在my.cnf文件中使用innodb_flush_log_at_trx_commit=1和sync_binlog=1;
- 确保未在复制主机上启用系统变量skip_networking。如果已禁用网络连接,则从服务器将无法与主服务器通信,复制将失败。
因此,我的my.cnf配置如下:
[mysqld]
# 复制相关参数配置
server_id =
binlog_format=ROW
log_bin=/mysql/binlog/master-bin
sync_binlog=
expire_logs_days=
max_binlog_size=1G
sync_binlog=
innodb_flush_log_at_trx_commit=
(二)创建用于复制的用户(主)
每个从服务器都需要使用MySQL的用户和密码连接到主服务器上,因此需要在主服务器上创建MySQL的用户,用于进行复制操作。可以为每个从库单独创建一个账号,也可以使用同一个账号。账号需具有“replication slave”权限。
mysql> grant replication slave on *.* to 'rep'@'%' identified by '';
(三)初始化从库数据(从)
初始化的方法有很多,可以使用mysqldump,也可以使用xtrabackup,其他方法见https://dev.mysql.com/doc/refman/5.7/en/replication-snapshot-method.html。这里以最常用的mysqldump进行操作。
(3.1)首先对主库进行备份
[root@slavedb ~]# mysqldump -uroot -p123456 -h 192.168.10.11 --single-transaction --all-databases --master-data= > master.sql
mysqldump: [Warning] Using a password on the command line interface can be insecure. [root@slavedb ~]# ls -l
total
-rw-r--r-- root root Feb : master.sql
注意:--master-data=2不可缺少,该参数会将备份到的位置以注释的形式保存在备份集文件中。
(3.2)在备库上还原
[root@slavedb ~]# mysql -uroot -p123456 < master.sql
mysql: [Warning] Using a password on the command line interface can be insecure.
(3.3)确认备库还原到的位置
[root@slavedb ~]# cat master.sql |grep "CHANGE MASTER"|less -- CHANGE MASTER TO MASTER_LOG_FILE='master-bin.000021', MASTER_LOG_POS=;
(四)从数据库复制相关参数配置(从)
如果尚未设置从服务器ID,或者当前值与您为主服务器选择的值冲突,请关闭从服务器并编辑[mysqld]配置文件的 部分以指定唯一的服务器ID。例如:
[mysqld]
server_id =
注意:不必在从属服务器上启用二进制日志记录即可设置复制。但是,如果在从属服务器上启用二进制日志记录,则可以使用从属服务器的二进制日志进行数据备份和崩溃恢复,也可以将从属服务器用作更复杂的复制拓扑的一部分(级联)。
(五)将从数据库添加到复制环境(从)
在从服务器设置主服务器配置信息:
mysql> change master to
-> master_host='192.168.10.11',
-> master_port=,
-> master_user='rep',
-> master_password='',
-> master_log_file='master-bin.000021',
-> master_log_pos=;
启动从库复制相关进程:
mysql> start slave;
Query OK, 0 rows affected (0.01 sec)
(六)确认复制状态
在从库执行“ show slave status ”,如果Slave_IO_Running和Slave_SQL_Running都是“YES”,说明复制正常。
mysql> show slave status \G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.10.11
Master_User: rep
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: master-bin.000022
Read_Master_Log_Pos: 1192320
Relay_Log_File: slavedb-relay-bin.000005
Relay_Log_Pos: 1192535
Relay_Master_Log_File: master-bin.000022
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 1192320
Relay_Log_Space: 1192911
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 1
Master_UUID: caa64a22-481a-11ea-b0f1-000c29fb6200
Master_Info_File: /mysql/data/master.info
SQL_Delay: 0
SQL_Remaining_Delay: NULL
Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
Master_Retry_Count: 86400
Master_Bind:
Last_IO_Error_Timestamp:
Last_SQL_Error_Timestamp:
Master_SSL_Crl:
Master_SSL_Crlpath:
Retrieved_Gtid_Set:
Executed_Gtid_Set:
Auto_Position: 0
Replicate_Rewrite_DB:
Channel_Name:
Master_TLS_Version:
1 row in set (0.00 sec)
【完】
附录:
MySQL复制(replication)文档集合:
1.复制概述 2.基于二进制日志文件位置(binlog)配置复制 3.基于全局事物标识符(GTID)配置复制 4.多源复制 5.级联复制 6.半同步复制 7.延迟复制 8.复制过滤规则 9.对复制进行故障排除 10.故障切换 11.复制管理 |
最新文章
- 掌握Thinkphp3.2.0----标签库
- lvs+keeplived笔录
- CSS值得关注的那些事?
- linux httpd 服务的安装
- Java的导入与导出Excel
- oracle删掉重复数据的语法
- ORA-01045: user XXZY lacks CREATE SESSION privilege; logon denied
- 文章3说话 微信商城云server创建后台
- 查找页面中最大的z-index 的值
- 《初识PE》导出表
- object-fit 解决图片指定大小被压缩问题
- AJAX跨域的常见方法
- 关于模式为singTask的activity的bundle问题
- Oracle12c_安装1——准备工作
- JavaScript sort() 方法
- 【工具篇】接口测试神器 -- Postman 入门教程
- java新手入门
- 整数中x出现的次数
- Chrome 屏蔽广告
- 【BZOJ】3140: [Hnoi2013]消毒