mysql主从配置 简书_MySQL主从同步配置

准备

MySQL数据库,本文中只用到两台,一台主,一台从,多台的原理和两台一致,就是重复配置的过程

为了方便我直接使用Docker在两台服务器上分别MySQL,A机器使用3306端口作为主,B机器使用33306端口作为从。

分别在两台机器上安装Docker后首先pull官方MySQL镜像:

docker pull registry.docker-cn.com/library/mysql:5.7

然后分别在AB两台机器上新建两个文件夹/data/mysql0和/data/mysql0_conf作为数据存储文件夹和配置文件存储文件夹:

mkdir /data/mysql0 /data/mysql0_conf

接下来Docker run就可以了:

注意:最后的5709795eeffa为镜像ID,你需要先使用docker images查看你本地的镜像ID,然后在命令中使用你本地的镜像ID

A机器 - 3306:

docker run -p 3306:3306 --restart always -v /data/mysql0:/var/lib/mysql -v /data/mysql0_conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=rootroot -d 5709795eeffa

B机器 - 33306:

docker run -p 33306:3306 --restart always -v /data/mysql0:/var/lib/mysql -v /data/mysql0_conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=rootroot -d 5709795eeffa

这样,两台MySQL服务器就搭建完毕,默认账号root,默认密码rootroot

配置Master

再次提示:我使用的是3306那台A机器作为Master

在A机器宿主机上的/data/mysql0_conf文件夹中新建MySQL配置文件my.cnf,然后使用vim编辑其内容:

touch my.cnf

vim my.cnf

在其中配置MySQL的设置,以下是我的配置文件,其中###标注的部分才是涉及到主从相关的,其他部分用户可以忽略:

[mysqld]

character-set-server=utf8

collation-server=utf8_bin

default-storage-engine=INNODB

max_allowed_packet=256M

innodb_log_file_size=2GB

binlog_format=row

transaction-isolation=READ-COMMITTED

######## MySQL主从配置相关,上面的用户可以忽略,但是需要第一行[mysqld] ########

server-id=3306

log-bin=mysql-bin

binlog-do-db=testgogo

binlog-ignore-db=mysql

binlog-ignore-db=information_schema

binlog-ignore-db=performance_schema

binlog-ignore-db=sys

expire_logs_days=7

######## MySQL主从配置相关 END #######

配置说明

server_id : 服务器ID,多台MySQL的ID不能一致,在这里我用端口号作为ID,你也可以换成其他数字

log-bimysql-bin : 开启bin-log日志

binlog-do-db=testgoo : 要同步的库,不配置的话则所有库都进行同步

binlog-ignore-db=xxx : 不要同步的库,建议将MySQL自带的库忽略同步,mysql、information_schema

、performance_schema和sys四个库,每个占一行

expire_logs_days=7 本次保存log的时间为7天,根据你的情况设置

重启MySQL服务

首先查看MySQL容器ID

docker ps -a

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

10e9151d1ed6 5709795eeffa "docker-entrypoint..." 3 hours ago Up 3 hours 0.0.0.0:3306->3306/tcp youthful_lamarr

重启容器

docker restart 10e9151d1ed6

查看Master配置结果,使用命令行连接至MySQL,执行命令:

mysql> show variables like '%log_bin%';

+---------------------------------+--------------------------------+

| Variable_name | Value |

+---------------------------------+--------------------------------+

| log_bin | ON |

| log_bin_basename | /var/lib/mysql/mysql-bin |

| log_bin_index | /var/lib/mysql/mysql-bin.index |

| log_bin_trust_function_creators | OFF |

| log_bin_use_v1_row_events | OFF |

| sql_log_bin | ON |

+---------------------------------+--------------------------------+

6 rows in set (0.04 sec)

显示log_bin ON说明成功,接下来创建一个用于同步数据的用户,用户名backup,密码123456

grant replication slave on *.* to 'backup'@'%' identified by '123456';

创建完毕后使用命令查看是否创建成功

mysql> use mysql

mysql> select user,authentication_string,host from user;

配置Slave库

首先将Slave库中的数据与Master中的数据同步,用工具导出sql然后同步或直接导出SQLdump备份然后再恢复都可以,同步方式这里不多赘述。

在B机器宿主机上的/data/mysql0_conf文件夹中新建MySQL配置文件my.cnf,然后使用vim编辑其内容:

touch my.cnf

vim my.cnf

在其中配置MySQL的设置,以下是我的配置文件,其中###标注的部分才是涉及到主从相关的,其他部分用户可以忽略:

[mysqld]

character-set-server=utf8

collation-server=utf8_bin

default-storage-engine=INNODB

max_allowed_packet=256M

innodb_log_file_size=2GB

binlog_format=row

transaction-isolation=READ-COMMITTED

######## MySQL主从配置相关,上面的用户可以忽略,但是需要第一行[mysqld] ########

server_id=33306

read_only = 1

master_info_repository=TABLE

relay_log_info_repository=TABLE

#relay_log_recovery=1

#super_read_only=1

######## MySQL主从配置相关 END #############

配置保存后重启Docker容器

重启后,首先去A机器查看一下MySQL的Master状态,在Master的MySQL控制台中执行:

mysql> show master status \G

*************************** 1. row ***************************

File: mysql-bin.000004

Position: 5121

Binlog_Do_DB: testgogo

Binlog_Ignore_DB: mysql,information_schema,performance_schema,sys

Executed_Gtid_Set:

1 row in set (0.00 sec)

得到结果后我们将File和Position记录一下,然后放到下面命令中,在Slave机器的MySQL控制台中执行:

stop slave;

mysql> change master to

master_host='192.168.31.206你的ip',

master_port=3306,

master_user='backup',

master_password='123456',

master_log_file='mysql-bin.000004',

master_log_pos=5121;

mysql> start slave;

上面命令都执行完毕后,执行下面命令查看配置结果:

mysql> show slave status \G

*************************** 1. row ***************************

Slave_IO_State: Waiting for master to send event

Master_Host: 192.168.31.206

Master_User: backup

Master_Port: 3306

Connect_Retry: 60

Master_Log_File: mysql-bin.000004

Read_Master_Log_Pos: 5121

Relay_Log_File: b6e1b65991ac-relay-bin.000002

Relay_Log_Pos: 604

Relay_Master_Log_File: mysql-bin.000004

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

其中Slave_IO_Running和Slave_SQL_Running均为YES说明配置成功。

接下来可以去Master中进行增删改查数据,然后回Slave进行查看是否同步。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值