搭建mysql主从数据库

本文详细描述了如何在Docker环境下,通过创建和配置MySQL主从服务器,包括创建文件夹、修改配置、建立容器、设置权限、主从关联及创建只读账号的过程。
摘要由CSDN通过智能技术生成

这里我设置的是一主二从,3306为主。

一、创建存储文件夹

[root@localhost ~]# cd /usr/local
[root@localhost local]# mkdir -p  software/mysql/3306/conf software/mysql/3306/data  software/mysql/3310/conf  software/mysql/3310/data software/mysql/3311/conf software/mysql/3311/data
[root@localhost local]# cd software/
[root@localhost software]# tree
.
└── mysql
    ├── 3306
    │   ├── conf
    │   └── data
    ├── 3310
    │   ├── conf
    │   └── data
    └── 3311
        ├── conf
        └── data

三、修改mysql配置文件

新建一个测试容器,从容器中拷贝原始配置文件my.cnf。

1.新建docker容器

docker run -it --name mytest -e MYSQL_ROOT_PASSWORD=123 -d mysql

2.切换到目标目录,拷贝my.cnf文件。

docker cp 容器名称: 容器内文件地址 拷贝到目标地址(./   ---当前目录位置)。

[root@localhost ~]# cd /usr/local/softwares/mysql/3306/conf
[root@localhost conf]# docker cp mytest:/etc/mysql/my.cnf ./

3.删除测试容器。

[root@localhost conf]# docker stop mytest
mytest
[root@localhost conf]# docker rm mytest
mytest

四、搭建主(master)服务器(docker容器) 

[root@localhost 3306]# docker run \
-it \
--name mysql_3306 \
--privileged \
--network wn_docker_net \
--ip 172.18.12.2 \
-p 3306:3306 \
-v  /usr/local/software/mysql/3306/conf/my.cnf:/etc/mysql/my.cnf \
-v  /usr/local/software/mysql/3306/data:/var/lib/mysql \
-v /usr/local/software/mysql/3306/mysql-files:/var/lib/mysql-files \
-e MYSQL_ROOT_PASSWORD=123 \
-d mysql

1.客户端测试:

2.防火墙开启指定窗口。

firewall-cmd --add-ports=3306/tcp --permanent 
firewall-cmd --reload
firewall-cmd --list-ports 

3.master服务器配置:my.cnf。

[root@localhost 3306]# cd conf
[root@localhost conf]# vim my.cnf 

:wq保存退出。

4.查看master状态。

[root@localhost conf]# docker exec -it mysql_3306 bash
root@6265f33a5ab3:/# mysql -uroot -p123

五、创建从(slave)服务器

1.同三-2

创建文件夹,拷贝my.cnf文件。

2.修改3310内的配置文件。

[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql
secure-file-priv= NULL
default_authentication_plugin=mysql_native_password

# Custom config should go here
!includedir /etc/mysql/conf.d/

server-id=201
log-bin=wnhz-slave-01-bin
relay_log=wnhz-mysql-relay-bin
read-only=1

3.创建slave容器

docker run \
-it \
--name mysql_3310 \
--privileged \
--network wn_docker_net \
--ip 172.18.12.3 \
-p 3310:3306 \
-v  /usr/local/software/mysql/3310/conf/my.cnf:/etc/mysql/my.cnf \
-v  /usr/local/software/mysql/3310/data:/var/lib/mysql \
-v /usr/local/software/mysql/3310/mysql-files:/var/lib/mysql-files \
-e MYSQL_ROOT_PASSWORD=123 \
-d mysql

六、master创建用户slave进行主从关联

1.开放防火墙端口(以3310为例)。

[root@localhost conf]# firewall-cmd --zone=public --add-port=3310/tcp --permanent
success
[root@localhost conf]# firewall-cmd --reload 
success
[root@localhost conf]# firewall-cmd --zone=public --list-ports 
3306/tcp 3310/tcp

2.创建与从(slave)服务通信的用户。

3.获取master容器ip地址。

IPAddress为docker容器内ip地址。

4.进入从(slave)容器中,输入命令 change master to 参数,注意对应关系。

change master to master_host='172.18.12.2', master_user='slave',master_password='123',MASTER_LOG_FILE='wnhz-master-logbin.000001',MASTER_LOG_POS=156;

5.开启slave。

mysql> start slave;
Query OK, 0 rows affected, 1 warning (0.00 sec)

6.查询slave状态。

mysql> show slave status \G;

主从配置成功。

七、创建从的只读账号。

create user 'sd'@'%' IDENTIFIED WITH mysql_native_password BY '123';
GRANT SELECT ON *.* TO 'sd'@'%';
flush privileges;

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值