Mysql数据库搭建主备 实现数据库同步

admin 20天前 115

关于数据库搭建可以看上一篇文章:
https://www.4gml.com/thread-135.htm

环境说明

主库: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_RunningSlave_SQL_Running都为Yes的话那就没什么问题了

3:配置从库2

基本步骤按配置从库1来、 在上述操作完成后在Mysql中执行以下指令即可

stop slave;
change master to master_delay = 3600;
start slave; 

3600为3600秒,你可以修改成你需要的数字。

完工

最新回复 (0)
全部楼主
返回
发新帖