Sub-database and sub-table realize read-write separation based on Shardingjdbc+docker+mysql master-slave architecture (1)

        Note: Please install docker yourself before reading this article. This article mainly implements reading and writing separation by using docker to deploy mysql and connect to the database for testing. The second article will implement the read-write separation implementation of springboot using Shardingjdbc.

        1: Why should we separate reading and writing:

        2: Core operations

        Create the master-slave architecture of Mysql based on Docker

#创建主从数据库文件夹
 mkdir -p /usr/local/mysql/masterl/conf
 mkdir -p /usr/local/mysql/masterl/data
 mkdir -p /usr/local/mysql/slave1/conf
 mkdir -p /usr/local/mysql/slave1/data

初始化主数据库配置文件
 cd /usr/local/mysql/master1/conf
 vi my.cnf

 #粘贴以下内容
[mysqld]
 datadir = /usr/local/mysql/master1/data
 character-set-server = utf8
 lower-case-table-names = 1

#主从复制-主机配置#主服务器一ID
 server-id = 1
#启用二进制日志
 log-bin=mysql-bin
#设logbin格式
 binlog_format = STATEMENT

#初始化从数据库配置文件
 cd /usr/local/mysql/slave1/conf
 vi my.cnf

#粘贴以下内容
[mysqld]
datadir = /usr/local/mysql/slave1/data30
character-set-server = utf8
lower-case-table-names = 1

#主从复制-从机配置# 从服务器一ID
 server-id =2
#启用中继日志
relay-log = mysql-relay

#文件授权
chmod -R 777 /usr/local/mysql

        Docker deploys mysql8.0

#拉取镜像
 docker pull mysql:8.0


#构建主数据库容器
docker run --name=mysql-master-1 --privileged=true -p 8808:3306 -v /usr/local/mysql/masterl/data/:/var/lib/mysql -v /usr/local/mysql/masterl/conf/my.cnf:/etc/mysql/my.cnf -v /usr/local/mysql/masterl/mysql-files/:/var/lib/mysql-files/ -e MYSQL_ROOT_PASSWORD=root -d mysql:8.0 --lower_case_table_names=1


#构建从数据库容器
docker run --name=mysql-slave-1 --privileged=true -p 8809:3306 -v /usr/local/mysql/slavel/data/:/var/lib/mysql -v /usr/local/mysql/slavel/conf/my.cnf:/etc/mysql/my.cnf -v /usr/local/mysql/slavel/mysql-files/:/var/lib/mysql-files/ -e MYSQL_ROOT_PASSWORD=root -d mysql:8.0 --lower_case_table_names=1

        Write the replication configuration file for the primary database

# 主数据库创建用户slave并授权
# 创建用户,设置主从同步的账户名
# 当后期从节点需要用这个账号和密码登录主节点订阅binlog日志实现主从同步
create user 'qiyu-slave'@'%' IDENTIFIED WITH mysql_native_password by 'qiyu-pwd';
# 授权
grant replication slave on *.* to 'qiyu-slave'@'%';
# 刷新权限
flush PRIVILEGES
# 查询server_id
SHOW variables like 'server_id';

#  查询master状态
show master STATUS

# 重置mater的binlog位点
reset master;

        Write a replication configuration file from the database

show VARIABLES like 'server_id'

--每个数据库的server_id不能一样 也可临时指定server_id的值
set GLOBAL server_id = 2

-- 设置主数据库
change master to master_host='192.168.1.128',master_port=8808,master_user='qiyu-slave',master_password='qiyu-pwd',master_log_file='binlog.000001',master_log_pos=157;

-- 开始同步
start slave;
# stop slave;
# reset slave;

-- 查看slave状态
show SLAVE STATUS

        Finally: When the following picture appears, it means that the master-slave configuration is successful, and then you can test the connection.

 

Guess you like

Origin blog.csdn.net/qq_67801847/article/details/131999748