一、环境介绍
系统:CentOS Linux release 7.9.2009 (Core)
数据库MySQL版本:5.6.50-log
数据库连接工具Navicat
终端工具SecureCRT
master(194.168.2.103) slave(194.168.2.104)
二、创建测试数据库
-- 创建数据库
create database data_test;
-- 查看数据库
show databases;
三、修改master配置文件
#编辑
vi /etc/my.cnf
#添加
#日志文件名称
log-bin=mysql-bin
#服务器编号
server-id=1
#日志文件格式,非必须
binlog-format= ROW
#对应需要实现主从复制的数据库(没有出创建,如果没创建也可以等配置完成后创建)
binlog_do_db= data_test #数据库名字 如果有多个以空格隔开db1 db2 db3
#binlog-ignore-db= #不同步的数据 如果有多个以空格隔开db1 db2 db3 ....
#为了在使用带事务的InnoDB进行复制设置时尽可能提高持久性和一致性
#当设置为0,该模式速度最快,但不太安全,mysqld进程的崩溃会导致上一秒钟所有事务数据的丢失。
#当设置为1,该模式是最安全的,但也是最慢的一种方式。在mysqld 服务崩溃或者服务器主机crash的情况下,#binary log 只有可能丢失最多一个语句或者一个事务。。
#当设置为2,该模式速度较快,也比0安全,只有在操作系统崩溃或者系统断电的情况下,上一秒钟所有事务数据才可能丢失。
innodb_flush_log_at_trx_commit= 2
#表示每次事务提交,MySQL都会把binlog刷下去,是最安全但是性能损耗最大的设置
#sync_binlog=0,表示MySQL不控制binlog的刷新,由文件系统自己控制它的缓存的刷新。这时候的性能是最好的,但#是风险也是最大的。因为一旦系统Crash,在binlog_cache中的所有binlog信息都会被丢失。
#sync_binlog>0,表示每sync_binlog次事务提交,MySQL调用文件系统的刷新操作将缓存刷下去。
sync_binlog= 1
四、查看skip_networking
#开启该选项后就不能远程访问MySQL
#确保在主服务器上 skip_networking 选项处于 OFF 关闭状态, 这是默认值。
#如果是启用的,则从站无法与主站通信,并且复制失败。
show variables like '%skip_networking%';
五、创建从库连接主库的用户
#创建
create user 'slave1'@'%' identified by '123345';
#赋权,更改远程连接
GRANT REPLICATION SLAVE ON *.* TO 'slave1'@'%'
六、Slave配置
vi /etc/my.conf
#日志文件名字
log_bin= mysql-bin
#日志文件格式
binlog-format= ROW
#服务器的id,是唯一的
server-id= 2
#双主互相备份(表示从服务器可能是另外一台服务器的主服务器)
log-slave-updates= true
七、重启主从数据库
systemctl restart mysqld
八 、配置并验证
#Master数据库
show master status;
#配置slave服务器连接master参数,和参数为查询主库的参数
# MASTER_HOST 主服务器的主机名(也可以是 IP)
# MASTER_USER 连接到主服务器的用户
# MASTER_PASSWORD 到主服务器的密码
# MASTER_PORT 端口号
# MASTER_LOG_FILE 文件名称
# MASTER_LOG_POS 文件位置偏移量,执行位置
CHANGE MASTER TO MASTER_HOST='192.168.2.103',MASTER_USER='slave1',MASTER_PASSWORD='123345',MASTER_PORT=3306,MASTER_LOG_FILE='mysql-bin.000002',MASTER_LOG_POS=961;
#如果上一步配置错误修改方法为
CHANGE MASTER TO MASTER_HOST='192.168.2.103',MASTER_USER='slave1',MASTER_PASSWORD='123345',MASTER_PORT=3306,MASTER_LOG_FILE='mysql-bin.000002',MASTER_LOG_POS=407;
# 启动从库
start slave;
# 停止
stop slave;
#查看从库
show slave status;
九、记录错误
由于设置master数据库密码导致
重新设置
CHANGE MASTER TO MASTER_HOST='192.168.2.103',MASTER_USER='slave1',MASTER_PASSWORD='123345',MASTER_PORT=3306,MASTER_LOG_FILE='mysql-bin.000002',MASTER_LOG_POS=407;