mysql服务主从-主主互相备份教程

准备

假设:

主服务器:192.168.1.2

从服务器:192.168.1.3

主服务器配置

修改MySQL 配置文件(通常是 /etc/my.cnf 或 /etc/mysql/my.cnf)添加以下字段

[mysqld]
# 服务器唯一id,与其它从服务器不一样即可
server-id = 1
# 打开二进制功能,MASTER主服务器必须打开此项默认名mysql-bin
log_bin = mysql-bin
# 需要复制的数据库,不配置默认复制全部
binlog_do_db = your_database_name 

重启 MySQL 服务,容器安装重启容器。

创建同步用户

#登录mysql
mysql -u root -p
创建用户并授予权限:

CREATE USER 'replicator'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'replicator'@'%';
FLUSH PRIVILEGES;

# replicator 是用户名,password是密码这两项可自定义。所有主从这一步都配置相同的账户密码

获取当前二进制日志位置

FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;

记下 File 和 Position 的值,例图:

解锁表

UNLOCK TABLES;

从服务器配置

修改MySQL 配置文件(通常是 /etc/my.cnf 或 /etc/mysql/my.cnf)添加以下字段

[mysqld]
#服务器唯一id,不可与同步的其它服务器相同
server-id = 2
#二进制日志名,默认mysql-bin
log_bin = mysql-bin
# 需要复制的数据库,不配置默认全部
binlog_do_db = your_database_name  

重启mysql服务;docker部署重启容器。

进入mysql创建配置用户

CREATE USER 'replicator'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'replicator'@'%';
FLUSH PRIVILEGES;
#replicator是用户名,password是密码,要跟上面的一样

获取二进制日志位置

FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;

记下 File 和 Position 的值,如下图:


配置主从复制

从服务器操作

进入myxql

CHANGE MASTER TO
  MASTER_HOST='Master1_IP',
  MASTER_USER='replicator',
  MASTER_PASSWORD='password',
  MASTER_PORT=3306,
  MASTER_LOG_FILE='主服务器的File值',
  MASTER_LOG_POS=主服务器的Position值;

启动自动复制

START SLAVE;

此刻已经配置号了主从复制了。

检查复制状态

SHOW SLAVE STATUS\G;
#确保 Slave_IO_Running 和 Slave_SQL_Running 都是 Yes。

配置互相备份

即没有主从,是主主备份,只需在主服务器再操作一遍上一步

主服务器操作

进入mysql

CHANGE MASTER TO
  MASTER_HOST='Master2_IP',
  MASTER_USER='replicator',
  MASTER_PASSWORD='password',
  MASTER_PORT=3306,
  MASTER_LOG_FILE='从服务器的File值',
  MASTER_LOG_POS=从服务器的Position值;

启动复制

START SLAVE;

检查状态

SHOW SLAVE STATUS\G;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值