使用docker创建数据库从机进行读写分离
1.拉取指定的mysql镜像
-
登录并获取镜像
# 登录 docker login -u fengxiaozi -p # 获取镜像 docker pull mysql:5.7.35
2.为docker创建配置文件
-
建立
mysql-slave文件夹作为docker中mysql的配置文件# 创建文件夹 mkdir mysql-slave # 进入文件夹创建配置 cd mysql-slave # 创建从机数据存放的文件 mkdir data # 拷贝主机的配置文件同时也作为从机的配置文件 cp /etc/my.cnf ./
3.修改主从机的配置文件
-
修改主机配置文件
-
目的
- 设置主机的id号, mysql通过id号来识别主从机
- 创建二进制文件的生成地址, 通过查看二进制文件, 获取主机地址, 让从机能够找到当前主机
-
具体操作
-
打开mysql的配置文件
vim /etc/my.cnf -
修改配置文件
# 增加下面的两行 server-id=1 # 设置主机id为1 log-bin=/var/lib/mysql/mysql-bin.log # 设置二进制日志文件的存放地址 -
重启mysql
systemctl restart mysqld
-
-
-
修改从机的配置文件
-
目的
- 设置从机不生成日志
- 设置从机的id号
-
具体操作
-
修改
mysql-slave下面的配置文件-
打开配置文件
vim my.cnf -
修改配置文件
general-log=0 # 设置从机不生成日志文件 server-id=2 # 设置从机id,只要不是1就ok
-
-
-
4.启动从机并冷热备份
-
docker启动从机数据库
docker run -d --name=mysql-slave -e MYSQL_ROOT_PASSWORD="密码" -v /root/mysql-slave/data:/var/lib/mysql -v /root/mysql-slave/my.cnf:/etc/my.cnf --network=host mysql:5.7.35 # -e MYSQL_ROOT_PASSWORD="密码": 设置从机数据的密码 # -v /root/mysql-slave/data:/var/lib/mysql: 设置从机数据存放的真实地址 # -v /root/mysql-slave/my.cnf:/etc/my.cnf: 设置从机配置文件与真实地址的映射关系 # --network=host: 设置从机数据库的网络地址, 与本机地址一致 # mysql:5.7.35: 根据myql:5.7.35建立容器 -
冷备份(将主数据库中的数据导入到从机数据库中)
# 从主数据库中导出数据 mysqldump -uroot -p --all-databases --lock-all-tables > master_db.sql # 将数据导入到从机数据库中 mysql -uroot --host=ip --port=8306 -p < master_db.sql -
开启热备份
-
在主数据库中建立从机账户
# 登录主机的数据库 mysql –uroot –p # 创建从机账号 GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%' identified by '从机密码'; # 刷新权限 FLUSH PRIVILEGES; # 展示二进制文件信息, 用于从机定位到主机 SHOW MASTER STATUS; -
从机连接主数据库
# 登录从机数据库 mysql -uroot -p -h 127.0.0.1 --port=8306 # 从机通过二进制文件与远程主机建立联系 change master to master_host='127.0.0.1', master_user='slave', master_password='slave',master_log_file='mysql-bin.000012', master_log_pos=901; # 开启从机服务 start slave; # 展示从机服务状态, 查看是否配置成功 show slave status \G
-
浙公网安备 33010602011771号