MySql主从复制(主:CentOS7_docker_mySql.8,从:windows11_mySql.8)

在配置mysql主从复制时踩了很多坑,做个笔记备忘,也希望可以为大家提供帮助。

Master配置(基于docker):

1.docker安装mysql:

docker安装mysql比较简单,但是要注意提前准备挂载点目录!步骤简单说下吧。

# 1.下载mySql,默认最新

docker pull mysql

# 2.创建挂载点目录

mkdir -p /usr/local/mysql/log
mkdir -p /usr/local/mysql/data
mkdir -p /usr/local/mysql/config

# 3.运行创建容器

docker run -d \
-p 3306:3306 \
--privileged=true \
-v /usr/local/mysql/log:/var/log/mysql \
-v /usr/local/mysql/data:/var/lib/mysql \
-v /usr/local/mysql/conf:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=设置你自己的密码 \
--name mysql mysql:latest

2.配置字符集,防止中文报错:

注意:docker安装的mysql,/etc下没有my.cnf配置文件,需要自己新建! 执行以下操作:

# 进入配置目录

cd /usr/local/mysql/conf

# 修改/新建配置文件,my.cnf应该为空

vim my.cnf

# 复制以下配置并保存退出

[client]
default_character_set=utf8
[mysqld]
collation_server=utf8_general_ci
character_set_server=utf8

# 重启mysql,使配置生效

docker restart mysql

到这准备工作已经做完,接下来开始正式配置主从复制。

3.配置master:

继续修改my.cnf文件,复制并保存以下内容:

# 进入/usr/local/mysql/conf目录

cd /usr/local/mysql/conf

# 修改my.cnf文件

vim my.cnf

# 复制并保存以下内容

[mysqld]
log-bin=mysql-bin # 启用二进制日志
server-id=100 # 服务器唯一id,也可以不设置为100

#重启mysql,使配置生效

docker restart mysql

二进制日志与服务器唯一id是必须配置的,还有一些其他的配置,需要的可以上网查查。

4.进入master容器实例登录数据库

# 进入数据库容器实例

docker exec -it 自己的容器名称(mysql) /bin/bash

# 登录数据库

mysql -uroot -p

5、在master容器实例mysql内创建数据同步用户

# 一条一条执行以下命令:
# 可以将'xiaoming'修改为其他名称,'123456'也可以修改为其他密码

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

# 下面命令中的'xiaoming'需要与你自己设置的一致

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

6.查看master状态,验证是否配置成功

# 查看master状态

show master status;

出现以下表格,证明配置成功:

 slave配置(Windows环境下)

这里面的坑比较多,配置时花了挺长时间,注意跟着以下步骤完成:

1.查找配置文件:

windows下mysql的配置文件为:C:\ProgramData\MySQL\my.ini 。

注意:C:\ProgramData是一个隐藏目录,需要设置将隐藏目录显示出来,点击查看->点击显示->勾选隐藏的目录。

 2.修改my.ini文件的可用权限:

my.ini文件的普通用户默认可用权限应该为只读,这时我们无法修改该文件,所以需要先修改权限:

右键点击my.ini文件 ->点击“属性”->点击“安全”->点击“Users”->点击“编辑”->点击“Users”->勾选"完全控制"->点击“应用”->点击“确定”->点击“确定”。

建议修这次使用结束后,将权限修改回去。

 3.编辑my.ini配置文件

用记事本打开“my.ini”文件,在文件最后加上如下配置,id可以更改为其他唯一id:

[mysqld]
server-id=101

 唯一id是必须配置的,其他非必须配置需要的自行上网查询。

4.navicat连接数据库或者直接mysql黑窗口启动mysql并顺序执行以下SQL

# 连接master与slave

change master to
master host = '192.168.116.130',
master_user='xiaoming',
master_password='zb185462',
master_log_file='mysql-bin.000001',
master_log_pos=717;


# 查看slave状态

show slave status;

此时,黑窗口会出现看似乱码但实际是一个表格的画面:

 在navicat中看的比较清楚:

 到这恭喜配置成功。

猜你喜欢

转载自blog.csdn.net/m0_56680022/article/details/130301701