mysql_docker主从复制_实战_binlog混合模式_天座著

步骤1:拉取镜像

docker pull mariadb:latest

步骤2.1:创建两个文件夹用于放置挂载mysql的my.cnf

/tianzuomysqlconf/master

/tianzuomysqlconf/slave

mkdir /tianzuomysqlconf

cd  /tianzuomysqlconf

mkdir master

mkdir slave

步骤2.2:创建一份my.cnf到步骤2中的文件夹。

#创建一个自定义的 my.cnf 文件:在本地主机上创建一个新的 my.cnf 文件,你可以使用任何文本编辑器进行编辑。确保按照 MariaDB 文档提供的配置选项进行修改

# 新的my.cnf文件内容可以为空。在MySQL中,my.cnf是配置文件,用于配置数据库服务器的各种参数和设置。如果你没有特定的需求或者不需要修改任何配置参数,那么新的my.cnf文件可以保持为空。在这种情况下,MySQL将使用默认的配置参数来启动和运行。但请注意,如果你需要自定义配置,确保将所需的配置项添加到my.cnf文件中,以便按照你的要求进行设置。

cd  /tianzuomysqlconf/master

touch my.cnf

cp my.cnf /tianzuomysqlconf/slave

步骤3:创建两个mysql容器,并使用/etc/mysql/conf.d/ 目录挂载my.cnf文件。

#分号可一起执行。

docker run -p 3309:3306 --name tianzuo_mysql_test_master -d -e MARIADB_ROOT_PASSWORD=STZ1024 -v /tianzuomysqlconf/master/my.cnf:/etc/mysql/conf.d/my.cnf mariadb;docker run -p 3310:3306 --name tianzuo_mysql_test_slave -d -e MARIADB_ROOT_PASSWORD=STZ1024 -v /tianzuomysqlconf/slave/my.cnf:/etc/mysql/conf.d/my.cnf mariadb

步骤3-error:如果过程中有操作失误,想要删除容器。

docker rm -f tianzuo_mysql_test_master;docker rm -f tianzuo_mysql_test_slave

步骤4:开始配置MySQL主从复制(binlog混合模式)

步骤4-1:配置主数据库(Master):

打开主数据库的配置文件my.cnf(/tianzuomysqlconf/master/my.cnf)。

vi /tianzuomysqlconf/master/my.cnf

按下键盘字母:i键

添加以下配置项:

[mysqld]

server-id = 1

log_bin = mysql-bin

binlog_format = MIXED

esc :wq

保存并关闭配置文件。

重启主数据库。

docker restart  tianzuo_mysql_test_master

步骤4-2:配置从数据库(Slave):

打开从数据库的配置文件my.cnf(/tianzuomysqlconf/slave/my.cnf)。

vi /tianzuomysqlconf/slave/my.cnf

按下键盘字母:i键

添加以下配置项:

[mysqld] 

server-id = 2

relay_log = relay-log

log_slave_updates = 1

保存并关闭配置文件。

重启从数据库。

docker restart  tianzuo_mysql_test_slave

步骤4-3:在主数据库中创建用于复制的账户

登录主数据库的命令行或图形化界面。

docker exec -it tianzuo_mysql_test_master bash

mysql -h localhost -P 3306 -u root -p"STZ1024"

执行以下SQL语句:

CREATE USER 'replication'@'%' IDENTIFIED BY 'STZ1024';GRANT REPLICATION SLAVE ON *.* TO 'replication'@'%';

FLUSH PRIVILEGES;

步骤4-4:获取主数据库的二进制日志位置

在主数据库的命令行或图形化界面执行以下SQL语句:

SHOW MASTER STATUS;

记下输出结果中的File和Position字段的值,将其用于后续步骤。

mysql_docker主从复制_实战_binlog混合模式_天座著_第1张图片

步骤4-5:配置从数据库的复制信息

登录从数据库的命令行或图形化界面。

docker exec -it tianzuo_mysql_test_slave bash

mysql -h localhost -P 3306 -u root -p"STZ1024"

执行以下SQL语句,将主数据库的信息配置到从数据库:

CHANGE MASTER TO

MASTER_HOST = '172.17.0.1',  

MASTER_PORT = 3309,

MASTER_USER = 'replication',

MASTER_PASSWORD = 'STZ1024',

MASTER_LOG_FILE = 'mysql-bin.000001',

MASTER_LOG_POS = 771;

备注:172.17.0.1是宿主机的ip,各位看官自行替换。

步骤4-6:启动从数据库的复制进程:

在从库中执行以下SQL语句:

START SLAVE;

步骤4-7:检查主从复制状态

在从数据库的命令行或图形化界面执行以下SQL语句:

SHOW SLAVE STATUS\G;

检查输出结果中的Slave_IO_Running和Slave_SQL_Running字段是否都为"YES",表示主从复制已经成功建立。

mysql_docker主从复制_实战_binlog混合模式_天座著_第2张图片

Slave_IO_Running反映了复制进程中I/O线程的状态。当其值为"YES"时,表示I/O线程正在正常运行,能够从主数据库接收复制日志文件(binlog)。

Slave_SQL_Running反映了复制进程中SQL线程的状态。当其值为"YES"时,表示SQL线程正在正常运行,能够将接收到的复制日志应用到备份数据库。

步骤4-error:如果需要重新配置从数据的复制信息,先停止从数据库的复制进程:

在从库中执行以下SQL语句:

STOP SLAVE;

再进行授权

CHANGE MASTER TO

MASTER_HOST = '172.17.0.1',  

MASTER_PORT = 3309,

MASTER_USER = 'replication',

MASTER_PASSWORD = 'STZ1024',

MASTER_LOG_FILE = 'mysql-bin.000001',

MASTER_LOG_POS = 771;

再回到步骤4-6

START SLAVE;

步骤5-验证:

mysql_docker主从复制_实战_binlog混合模式_天座著_第3张图片

步骤5-1 利用navicat建立两个连接;

步骤5-2 尝试在主库中创建一个库,看看从库会不会自动生成。

mysql_docker主从复制_实战_binlog混合模式_天座著_第4张图片

mysql_docker主从复制_实战_binlog混合模式_天座著_第5张图片

重新建立3310连接后,从库同步成功。速度贼快。至此验证成功。

你可能感兴趣的:(mysql,mysql,docker,数据库)