MySQL 5.7 主从复制

环境

  • mysql 主服务器,centos7.4,192.168.1.10,端口 10000
  • mysql 从服务器,centos7.4,192.168.1.6
  • 要复制的数据库有 data_db、conf_db

在主服务器上创建用于备份的用户 replicator

-- 此处建议用户名和指定的ip地址的最后一位数字一致
grant replication slave  on *.* to 'replicator'@'192.168.1.6' identified by 'password';
flush privileges;

在主服务器上修改 my.cnf

#建议与本机ip地址最后一位一致,与其他互备服务器均不一致
server_id = 10
read-only = 0
#
#开启 binlog
log-bin = mysql-bin
binlog_format = row
#关注要复制的数据库,存在跨库问题
binlog-do-db = data_db
binlog-do-db = conf_db
#忽略的数据库,存在跨库问题
#binlog-ignore-db =
#binlog 有效时间
expire_logs_days =
#GTID 复制模式
#gtid_mode = ON
#enforce-gtid-consistency=true
#双主或多主互备时,会用到以下配置
#自增主键初始值,与其他互备服务器一致
#auto-increment-offset =
#自增主键等差值,与其他互备服务器均不一致
#auto-increment-increment =

在主服务器上重启 mysql,获取 master 状态

-- 如果 mysql 是全新安装,则无须导出数据库初态,直接查看 binlog pos 即可
-- 锁定要导出的数据库表
flush tables with read lock;

导出数据库初态

#在主服务器的另一个终端中运行
mysqldump --master-data -uroot -p data_db > /tmp/data_db.sql
mysqldump --master-data -uroot -p conf_db > /tmp/conf_db.sql
#使用 GTID 模式时,无需 --master-data 参数
#复制到从服务器上
scp /tmp/data_db.sql /tmp/conf_db.sql 192.168.1.6:/tmp/

查看 binary 日志位置

show master status\G
-- 记住输出里的如下类似两行(不记录也可以,这两个信息已经写入了导出的sql文件中)
-- File: mysql-bin.000001
-- Position: 137103822
-- 解锁数据库表
unlock tables;

在从服务器上编辑 my.cnf

#建议与本机ip地址最后一位一致,与其他互备服务器均不一致
server_id = 6
read-only = 1
#
#如果该 slave 中也运行了 master,或者使用了 gtid 模式复制,则开启 binlog
#log-bin = mysql-bin
#binlog_format = row
#log-slave-updates = ON
#指定要复制的数据库,存在跨库问题
replicate-do-db = data_db
replicate-do-db = conf_db
#指定要复制的数据表,无跨库问题
#replicate-do-table = db1.t1
#replicate-wild-do-table = db1.%
#忽略的数据库,存在跨库问题
#replicate-ignore-db =
#忽略的数据表,无跨库问题
#replicate-ignore-table = db1.t1
#replicate-wild-ignore-table = db1.%
#中继日志
relay_log = mysql-relay-bin
#多线程复制
slave_parallel_type = logical_clock
slave_parallel_workers = 4
#GTID 模式
#gtid_mode = ON
#enforce-gtid-consistency=true
#双主或多主互备时,会用到以下配置
#自增主键初始值,与其他互备服务器一致
#auto-increment-offset =
#自增主键等差值,与其他互备服务器均不一致
#auto-increment-increment =

在从服务器上重启 mysql,导入初态

-- 创建要导入的数据库
create database data_db default charset utf8mb4;
create database conf_db default charset utf8mb4;

导入数据库

msyql -uroot -p data_db < /tmp/data_db.sql
mysql -uroot -p conf_db < /tmp/conf_db.sql

开启同步(master_log_file和mater_log_pos无需添加)

change master to master_host = '192.168.1.10',
                        master_port = 3306,
                        master_user = 'replicator',
                        master_password = 'password',
                        master_log_file = 'mysql-bin.000001',
                        master_log_pos = 137103822;
flush privileges;
-- gtid 模式
change master to master_host = '192.168.1.10',
                        master_port = 3306,
                        master_user = 'replicator',
                        master_password = 'password',
                        master_auto_position = 1;

在从服务器上重启 mysql,查看 slave 状态

-- 在从服务器上查看 slave 状态
mysql> show slave status\G
-- 如果看到
-- Slave_IO_Running: Yes
-- Slave_SQL_Running: Yes
-- 则表示 slave 开启成功!

转载于:https://my.oschina.net/colben/blog/803103

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值