跳到主要内容

多主多从

主从配置文件

MySQL:5.6镜像启动之后,容器中没有vim等工具,所以无法在容器中创建编辑MySQL配置文件。但是通过复制命令,我们可以把宿主机(容器的载体)中编辑好的配置文件复制到容器中,重启容器即可生效。

touch group.cnf

vim group.cnf

通用配置

[mysqld]

port=3306

skip_name_resolve = 1

skip_symbolic_links = yes

lower_case_table_names = 1

explicit_defaults_for_timestamp = ON

character_set_server = utf8

collation_server = utf8_general_ci

M1

# ***作为主库时的配置***

server_id = 1

# 开启binlog日志

log_bin = mysql-bin

binlog_format = STATEMENT

# 指定不记录日志的库

binlog-ignore-db=mysql

binlog-ignore-db=information_schema

# 自增长的数量

auto-increment-increment=2

# 偏移量

auto-increment-offset=1

# 一般情况下,从库不会将从主库获取的更新写入binlog日志,这样在做级联的时候数据不能更新,开启此项后,从库会把更新写进binlog日志。

log-slave-updates

M2

# ***作为主库时的配置***

server_id = 2

# 开启binlog日志

log_bin = mysql-bin

binlog_format = STATEMENT

# 指定不记录日志的库

binlog-ignore-db=mysql

binlog-ignore-db=information_schema

# 自增长的数量

auto-increment-increment=2

# 偏移量

auto-increment-offset=2

# 一般情况下,从库不会将从主库获取的更新写入binlog日志,这样在做级联的时候数据不能更新,开启此项后,从库会把更新写进binlog日志。

log-slave-updates

S1

# ***作为从库时的配置***

server_id = 3

# 开启中继日志

relay-log = mysql-relay

S2

# ***作为从库时的配置***

server_id = 4

# 开启中继日志

relay-log = mysql-relay

使用如下命令将配置文件复制到 “配置文件能生效的文件夹” 下,哪些文件夹有效可从容器中MySQL自带的my.cnf中查看

一般,把.cnf的文件拷贝到conf.d或mysql.conf.d下,新配置文件的内容就会覆盖原先的配置

# 进入容器

docker exec -it mysql01 /bin/bash

# 找到my.cnf所在位置,一般在下面这个文件夹

cd /etc/mysql

# 容器内无法使用vim查看文件内容,退出容器

exit

# 用下面的命令将group.cnf复制到容器中

docker cp group.cnf mysql01:/etc/mysql/mysql.conf.d/

# 重启MySQL或容器

docker restart mysql01

登录MySQL完成主从配置

M1、M2

# 创建slave用户并授权

CREATE USER 'slave'@'%' IDENTIFIED BY '123456';

GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';

FLUSH PRIVILEGES;

# 查看master状态

show master status;

S1、S2

# M1的IP:172.22.33.6,M2的IP:172.22.33.7

# 登录S1,配置与主库的连接,S2的类似

CHANGE MASTER TO

MASTER_HOST='172.22.33.6',

MASTER_PORT=3306,

MASTER_USER='slave',

MASTER_PASSWORD='123456',

MASTER_LOG_FILE='mysql-bin.000002',

MASTER_LOG_POS=120;

# 开始slave

start slave;

# 查看slave状态

show slave status/G;

看到这两项为Yes证明配置成功