生产中经常需要主从数据库,主数据库用于写操作,从数据库用于读操作,读写分立分担数据库压力。同步原理主要用到log-bin配置,主数据库记录操作保存为二进制文件,从数据库实时读取并更新。
基于Docker配置注册数据库更加方便,可以用于开发测试用,生产中也可以。
官网地址:https://www.docker.com/
我这边是mac,下载安装包就可以了,当然Windows也一样。
Linux服务器可以通过命令安装,官网上看一下就知道了。
用docker-compose对服务进行编排,安装后自带docker-compose命令。
目录结构
用docker-compose配置运行容器,可以将master和salve放在一个docker-compose.yml文件配置的,但我这里将master和slave分开了,方便理解思路。
docker-compose.yml
version: '3.1'
services:
mysql-1-master:
image: 'mysql:5.7'
container_name: mysql-1-master
environment:
MYSQL_ROOT_PASSWORD: 123456
command:
--default-authentication-plugin=mysql_native_password
--character-set-server=utf8mb4
--collation-server=utf8mb4_general_ci
--explicit_defaults_for_timestamp=true
--lower_case_table_names=1
ports:
- 3312:3306
volumes:
- ./data:/var/lib/mysql
- ./conf/my.cnf:/etc/my.cnf
my.cnf
server-id=1
log-bin=mysql-bin
binlog-ignore-db=information_schema
binlog-ignore-db=mysql
binlog-ignore-db=performance_schema
binlog-ignore-db=sys
character_set_server=utf8mb4
说明:
运行Master
docker-compose up -d
说明
查看容器id
docker ps
这里的583a00264b73就是下一步进入容器需要的(docker基本命令,不知道的可以去官网学一下)
进入容器并进入mysql
docker exec -it 583a00264b73 /bin/bash
mysql -uroot -p
查看master 状态
show master status
mysql-bin 和Position记一下,后面slave需要用
目录结构和master一样
my.cnf
[mysqld]
server-id=2
read_only=1
docker-compose.yml
version: '3.1'
services:
mysql-1-slave:
image: 'mysql:5.7'
container_name: mysql-1-slave
environment:
MYSQL_ROOT_PASSWORD: 123456
command:
--default-authentication-plugin=mysql_native_password
--character-set-server=utf8mb4
--collation-server=utf8mb4_general_ci
--explicit_defaults_for_timestamp=true
--lower_case_table_names=1
ports:
- 3313:3306
volumes:
- ./data:/var/lib/mysql
- ./conf/my.cnf:/etc/my.cnf
配置从数据需要备份的主数据库的信息
CHANGE MASTER TO MASTER_HOST='192.168.31.163',MASTER_PORT=3312,MASTER_USER='root',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql-bin.000003',MASTER_LOG_POS=154
开启slave
start slave
show slave status\G
出现两个yes,说明同步成功啦
用Navicat等数据库工具去测试一下,master更新数据立马被同步到slave了。
centos中配置定时导出sql备份,详看
https://blog.csdn.net/qq_28883885/article/details/102953140