微服务 教程
1085个小节阅读:195.5k
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
编号 | 角色 | IP地址 | 端口 | 机器名 |
---|---|---|---|---|
1 | Master1 | 192.168.66.101 | 3350 | node-1 |
2 | Slave1 | 192.168.66.101 | 3360 | node-2 |
3 | Master2 | 192.168.66.101 | 3370 | node-3 |
4 | Slave2 | 192.168.66.101 | 3380 | node-4 |
xxxxxxxxxx
#启动第一台
docker run -d -p 3350:3306 -e MYSQL_ROOT_PASSWORD=123456 --name=master1 mysql:5.7
#启动第二台
docker run -d -p 3360:3306 -e MYSQL_ROOT_PASSWORD=123456 --name=slave1 mysql:5.7
#启动第三台
docker run -d -p 3370:3306 -e MYSQL_ROOT_PASSWORD=123456 --name=master2 mysql:5.7
#启动第四台
docker run -d -p 3380:3306 -e MYSQL_ROOT_PASSWORD=123456 --name=slave2 mysql:5.7
1、修改master1配置文件
xxxxxxxxxx
[mysqld]
#主服务器唯一ID
server-id=1
#启用二进制日志
log-bin=mysql-bin
# 设置不要复制的数据库(可设置多个)
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
#设置logbin格式
binlog_format=STATEMENT
# 在作为从数据库的时候,有写入操作也要更新二进制日志文件
log-slave-updates
#指自增字段的起始值,其默认值是1,取值范围是1 .. 65535
auto-increment-increment=2
# 指字段一次递增多少,他的取值范围是1 .. 65535
auto-increment-offset=1
2、修改master2配置文件
xxxxxxxxxx
[mysqld]
#主服务器唯一ID
server-id=3 #启用二进制日志
log-bin=mysql-bin
# 设置不要复制的数据库(可设置多个)
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
#设置需要复制的数据库
binlog-do-db=需要复制的主数据库名字
#设置logbin格式
binlog_format=STATEMENT
# 在作为从数据库的时候,有写入操作也要更新二进制日志文件
log-slave-updates
#指自增字段的起始值,其默认值是1,取值范围是1 .. 65535
auto-increment-increment=2
#指字段一次递增多少,他的取值范围是1 .. 65535
auto-increment-offset=2
3、修改slave1配置文件
xxxxxxxxxx
[mysqld]
#从服务器唯一ID
server-id=2
#启用中继日志
relay-log=mysql-relay
4、修改slave2配置文件
xxxxxxxxxx
[mysqld]
#从服务器唯一ID
server-id=4 #启用中继日志
relay-log=mysql-relay
xxxxxxxxxx
systemctl restart mysql
1、分别在两个主库中执行创建从库连接账号命令
xxxxxxxxxx
GRANT replication SLAVE ON *.* TO 'slave' @'%' IDENTIFIED BY '123456';
2、查看两个主库的master状态
xxxxxxxxxx
show master status;
xxxxxxxxxx
change master to master_host='192.168.66.101',
master_user='slave',
master_port=3350,
master_password='123456',
master_log_file='mysql-bin.000001',
master_log_pos=438;
参数:
- master_host:这里的ip就是mysql所在服务器对应的ip
- master_user:就是在第一步配置的账号
- master_port:mysql的端口
- master_password:配置的密码
- master_log_file:file参数
- master_log_pos:Position参数
xxxxxxxxxx
start slave;
xxxxxxxxxx
show slave status \G;
xxxxxxxxxx
# 在master1上执行
CHANGE MASTER TO master_host = '192.168.66.101',
master_user = 'slave',
master_password = '123456',
master_port = 3370,
master_log_file = 'mysql-bin.000001',
master_log_pos = 154;
# 在master2上执行
CHANGE MASTER TO master_host = '192.168.66.101',
master_user = 'slave',
master_password = '123456',
master_port = 3350,
master_log_file = 'mysql-bin.000001',
master_log_pos = 154;
xxxxxxxxxx
start slave;
xxxxxxxxxx
show slave status \G;
vim schema.xml
xxxxxxxxxx
<dataNode name="db_node" dataHost="db_host" database="test" />
<dataHost name="db_host" maxCon="1000" minCon="10" balance="1"
writeType="0" dbType="mysql" dbDriver="native" switchType="1"
slaveThreshold="100" >
<heartbeat>select user()</heartbeat>
<!-- can have multi write hosts -->
<writeHost host="hostM1" url="192.168.140.128:3306" user="root"
password="123456">
<!-- can have multi read hosts -->
<readHost host="hostS1" url="192.168.140.127:3306" user="root"
password="123456" />
</writeHost>
<writeHost host="hostM2" url="192.168.140.126:3306" user="root"
password="123456">
<!-- can have multi read hosts -->
<readHost host="hostS2" url="192.168.140.125:3306" user="root"
password="123456" />
</writeHost>
</dataHost>
注意:
- writeType="0":所有写操作发送到配置的第一个 writeHost,第一个挂了切到还生存的第二个riteHost,重新启动后已切换后的为准,切换记录在配置文件中:dnindex.properties.
- writeType="1":所有写操作都随机的发送到配置的 writeHost,1.5 以后废弃不推荐。
- switchType="-1" :表示不自动切换 mysql 实例
- switchType="1" :默认值,自动切换