环境说明
主库:192.168.1.1
从库1:192.168.1.2
从库2:192.168.1.3
思路:
从库1 和 主库 实时同步,为了防止删库跑路(比如update不带条件式的修改)的情况,留下一小时抢救时间,从库2 延时一小时对从库1进行同步
开始搭建
1:配置主库(Master)
a) 修改主库配置文件
# 默认的懒得改
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
# 设置server-id
server-id = 1
# 设置数据库端口
port = 3306
# 设置绑定地址
bind-address = 192.168.1.1
# 设置引擎
default-storage-engine = InnoDB
# 设置默认字符集
character-set-server = utf8mb4
# 开启二进制日志,以备作为其它 Slave 的 Master 时使用
log-bin = mysql-bin
# 二进制日志自动删除/过期的天数。默认值为 0,表示不自动删除。
expire_logs_days = 10
# 二进制日志最大大小
max_binlog_size = 1000M
# 复制过滤:不需要备份的数据库,不输出(mysql 库一般不同步)
binlog-ignore-db = mysql
# 复制过滤:需要备份的数据库
binlog_do_db = test
# 复制过滤:需要过滤的表
replicate_wild_ignore_table = information_schema.%,performance_schema.%,sys.%
# binlog的格式
binlog_format = row
sync_binlog = 1
# 和 sync_binlog 组成双1 配置 保证数据的完整性
innodb_flush_log_at_trx_commit = 1
# 设置数据库时区
default-time_zone = '+8:00'
b) 配置好后重启数据库
systemctl restart mysqld.service
c) 创建同步账号并赋予同步权限
在Mysql中执行
create user 'replicate'@'%' identified by '这里设置为你的账户密码';
grant replication slave on *.* to 'replicate'@'%';
flush privileges;
d)查看状态
在Mysql中执行
show master status\G;
这里的 File: mysql-bin.000003 Position: 155先记录下来等下要用到。
2:配置从库1
1:配置主库(Master)
a) 修改主库配置文件
# 默认的懒得改
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
# 设置server-id
server-id = 2
# 设置数据库端口
port = 3306
# 设置绑定地址
bind-address = 192.168.1.2
# 设置引擎
default-storage-engine = InnoDB
# 设置默认字符集
character-set-server = utf8mb4
# 开启二进制日志,以备作为其它 Slave 的 Master 时使用
log-bin = mysql-bin
# 复制过滤:不需要备份的数据库,不输出(mysql 库一般不同步)
binlog-ignore-db = mysql
# 复制过滤:需要备份的数据库
binlog_do_db = test
# 复制过滤:需要过滤的表
replicate_wild_ignore_table = information_schema.%,performance_schema.%,sys.%
# binlog的格式
binlog_format = row
sync_binlog = 1
# 和 sync_binlog 组成双1 配置 保证数据的完整性
innodb_flush_log_at_trx_commit = 1
# 设置数据库时区
default-time_zone = '+8:00'
b) 配置好后重启数据库
systemctl restart mysqld.service
c) 创建同步
在Mysql中执行
change master to master_host='192.168.1.1',master_port=3306,master_user='replicate',master_password='同步账户密码',master_log_file='mysql-bin.000003',master_log_pos=155;
上面的192.168.1.1 和 3306 替换we你的主库ip和端口
mysql-bin.000003 和 155 替换为之前主库查询到的信息。
d)启动同步
在Mysql中执行
start slave;
查看同步状态:
show slave status\G;
其中Slave_IO_Running和Slave_SQL_Running都为Yes的话那就没什么问题了
3:配置从库2
基本步骤按配置从库1来、
在上述操作完成后在Mysql中执行以下指令即可
stop slave;
change master to master_delay = 3600;
start slave;
3600为3600秒,你可以修改成你需要的数字。
完工