mysql复制:在主数据库中,前端用户每执行一个写操作/语句,都会在二进制日志中保存一个事件,把这个事件从mysql的服务器中3306端口发送给从服务器,从服务器把这个事件接受下来,接受下来先保存在本地的中继日志文件中,而后,他再从中继日志文件中读一个事件,执行一下,然后这个操作的结果保存在存储设备中。
中继日志(relay log):接受主数据库服务器上传过来的数据,然后在执行一遍!
半同步:在一主多从的架构中,主数据库服务器将数据同步发送给另外一个节点,但是只保证至少一个节点同步完成,其他几个节点不能保证。
从服务器不能执行写操作,若执行了写操作,将导致与主服务器之间数据不一致!
多级复制:一个从服务器A可以在主服务器上拷贝数据,那从服务器B可以在从服务器A上复制数据。这个时候,从服务器A就需要用到二进制日志文件。
从服务器优点:分摊负载(负载均衡) 从服务器可以做备份,可以做冷备份,但是二进制文件要在主服务器上备份!
若主服务器崩溃,那么从服务器可以立即顶替上主服务器,代替主服务器的位置,但需要做一些修复。
异地容灾
负载均衡:主从模型,读可以在从服务器上读,写在主服务器上写!
双主模型,无法实现负载均衡,无法减轻写操作!
mysql5.5异步配置
注意对于mysql服务器来讲,一个主服务器可以带有多个从服务器,但是一个从服务器不可以有多个主服务器!
从mysql5.6开始引入了新机制: gtid全局事务号,使得mysql复制更加安全。
多线程复制
show slave status\G; 查看从服务器状态
一、主服务器(master)如何配置?
1、启用二进制日志 log-bin-index
2、选择一个唯一的server -id
3、创建具有复制权限的用户(RELICATION SLAVE复制权限,RELICATION CLIENT具有连接主服务器,获取相关信息的权限)
二、从服务器(slave)如何配置
1、启用中继日志(relay-log)
2、选择一个唯一的server-id
3、连接至主服务器并开始复制数据
mysql命令行下执行
changer master to master_host= " " ,master_port= " " ,master_log_file=" " , master_log_pos= ,master_user=" " ,master_password=" "
设定主服务器是什么 主服务器在哪里 主服务器的端口号 主服务器的二进制文件
主配置
先关防火墙
1,启用二进制日志:/etc/my.cnf开启这一项(log-bin=mysql-bin),并添加一行log-bin-index=master-bin.index
开启这一项binlog_format=mixed
添加一项:innodb_file_per_table = 1
2,启动服务并建立用户账号
grant replication slave on *.* to 'sun'@'192.168.178.2' identified by 'sun1021';
刷新授权表:flush privileges
从配置
先关防火墙
1、关闭二进制日志文件:#log-bin=mysql-bin
开启中继日志:relay-log = relay-log
relay-log-index =relay-log.index
2、改变一下server-id
3、启动服务
4、change master to master_host='192.168.178.1',master_user='sun',master_password='sun1021',master_log_file='master-bin.000001',master_log_pos=339;
5、查看从服务器状态:show slave status \G;
6、最后一步,mysql>start slave 启动从服务器
若出现错误:Slave_IO_Running: Connecting,只有三个问题,网络连通性,pos不同,用户密码不同,防火墙
在主从复制架构中,主服务器必须要启动sync-binlog,
sync-binlog=1 是否立即同步二进制文件,在主服务器上设置,用于事务安全
read-only * yes 在从服务器上设置,但对其管理员权限的用户不生效。
start slave sql_thread;
start slave io_thread;
从服务器中的日志保存在/数据目录/错误日志中
mysql5.5半同步配置
在主服务器上和从服务器上各自安装一个插件,实现半同步安装
插件在mysql安装目录中的/lib/plugin文件夹中!
semisync_master.so :主服务器上安装的插件
semisync_slave.so :从服务器上安装的插件
1、在主服务器上安装模块:mysql> install plugin rpl_semi_sync_master soname 'semisync_master.so';
查看模块:show global variables like '%rpl%'
+------------------------------------+-------+
| Variable_name | Value |
+------------------------------------+-------+
| rpl_recovery_rank | 0 |
| rpl_semi_sync_master_enabled | OFF | 是否启用半同步复制的主节点
| rpl_semi_sync_master_timeout | 10000 | 超时时间(毫秒)
| rpl_semi_sync_master_trace_level | 32 | 追踪级别
| rpl_semi_sync_master_wait_no_slave | ON | 若没有从服务器是否等待
+------------------------------------+-------+
2、在从服务器上安装模块:mysql> install plugin rpl_semi_sync_slave soname 'semisync_slave.so';
查看模块:show variables like '%rpl%';
3、先启动主服务器上的模块:set global rpl_semi_sync_master_enabled=1;
4、再启动从服务器上的模块::set global rpl_semi_sync_slave_enabled=1;
5、光启动还不行,查看模块全局变量:show global status like "%rpl%";
6、只有把从服务器线程关掉再重新启动才能生效:stop slave io_thread;
start slave io_thread;
7、再回到主服务器上查看全局变量:show global status like "%rpl%"; 第一行为1,代表成功!
mysql5.6 基于GTID及多线程的复制
数据库复制过滤(建议设置从服务器)
主服务器端:binlog-do-db :白名单,仅将指定数据库的相关修改操作记入二进制日志
binlog-ignore-db :黑名单,但凡跟这个数据库相关的操作我们都不记录进二进制日志文件
从服务器端:replicate-do-db :白名单,仅将指定数据库的相关修改操作记入二进制日志
replicate-ignore-db :黑名单,但凡跟这个数据库相关的操作我们都不记录进二进制日志文件
replicate-do-table :白名单,在表级别指定,仅复制那张表
replicate-ignore-table :黑名单在表级别指定,忽略复制那张表
replicate-wild-do-table :白名单,支持通配符(%任意所有、_任意单个)
replicate-wild-ignore-table :黑名单,支持通配符(%任意所有、_任意单个)
这些设置的条目都要写在mysql主配置文件中/etc/my.cnf中,并且重启mysql服务器!
UUID(全局唯一标识):通常对于MySQL服务器而言,他是一个128位的随机符。
GTID:它是由服务器的UUID并结合事务ID号来组合成的来表示唯一某一个事务的标识码!
在mysql5.6的binary log当中,在每一个事务的首部都会写上这个GTID的标识!
在我们的二进制日志文件当中,某一个事务相关的语句记录下来的时候,在这个事件首部会把它相关联的GTID给他记录下来!
mysql5.6的多线程复制
每个数据库仅能使用一个线程,复制涉及到多个数据库时多线程复制才意义!
slave-parallel-workers=线程数(尽可能等于数据库数,或者小于他,0代表禁用多线程复制)
mysql 提供了许多专门用于复制的管理工具,这些工具依赖于Python2.7及以上(不适用于红帽5)
跟复制、检查、显示、HA相关的命令!
工具下载地址:https://launchpad.net/mysql-utilities
mysqlreplicate :复制的工具,实现快速启动mysql的从服务器上,能够帮助mysql服务器检查已经在本地执行了的事务。
mysqlrplcheck :检查工具,实现验证我们的部署,并实现快速故障修复,
实现显示binlog相关配置异常,
mysqlfailover:故障转移工具,能够快速的让你自动或者手动提升一个从服务器为主服务器。
mysqlrplshow :显示工具,发现并显示复制拓扑图,显示主机名和端口号
mysqlrpladmin:管理工具, 手动让一个从服务器上线或者下线。
配置步骤
1.1、主服务器上的主配置文件:
datadir=/mydata/data
log-bin = master-bin
server-id = 1
socket = /tmp/mysql.sock
binlog-format=ROW
log-slave-updates=true
gtid-mode=on
enforce-gtid-consistency=true
master-info-repository=TABLE
relay-log-info-repository=TABLE
sync-master-info=1
slave-parallel-workers=2
binlog-checksum=CRC32
master-verify-checksum=1
slave-sql-verify-checksum=1
binlog-rows-query-log_events=1
report-port=3306
port=3306
report-host=192.168.1.1 重启服务!
1.2、登录mysql,查看GTID :show global variables like '%gtid%'; ON为启动
2.1、配置从服务器主配置文件
datadir=/mydata/data
log-bin = master-bin
server-id = 2
socket = /tmp/mysql.sock
binlog-format=ROW
log-slave-updates=true
gtid-mode=on
enforce-gtid-consistency=true
master-info-repository=TABLE
relay-log-info-repository=TABLE
sync-master-info=1
slave-parallel-workers=2
binlog-checksum=CRC32
master-verify-checksum=1
slave-sql-verify-checksum=1
binlog-rows-query-log_events=1
report-port=3306
port=3306
report-host=主服务器IP地址
二进制日志文件启不启动看你是否高可用性(主服务器挂了,从服务立马顶上去)
重启服务!
3.1、在主服务器上创建用户:grant replication slave on *.* to "repluser"@'从服务器IP地址' identified by 'replpass';
然后刷新授权表:flush privileges;
3.2、让从服务器连接主服务器:change master to master_host='192.168.1.1',master_user='repluser',master_password='replpass',master_log_file='master-bin.000',master_log-pos=456;
4.1、查看从服务器的状态:show slave status\G;查看复制功能是否运行?
Slave_IO_Running: No
Slave_SQL_Running: No
4.2、启动两个从服务器:start slave ;
现在基于GTID的主从复制已经完成,
可以在主服务器上查看从服务器的信息:show slave hosts;
mysql5.6的读写分离
两种方式安装:yum 编译
安装配置mysql-proxy:
1、下载所需要的版本,这里的系统平台为rhel6.4 32位系统,因此就以mysql-proxy-0.8.3-linux-glibc2.3-x86-32bit.tar.gz为例。
# tar xf mysql-proxy-0.8.3-linux-glibc2.3-x86-32bit.tar.gz -C /usr/local
# cd /usr/local
# ln -sv mysql-proxy-0.8.3-linux-glibc2.3-x86-32bit mysql-proxy
1.1、环境:yum -y install libevent glib2 lua
2、添加代理用户
# useradd mysql-proxy
2.1、给mysql-proxy添加启动脚本:
为mysql-proxy提供SysV服务脚本,内容如下所示
#!/bin/bash
#
# mysql-proxy This script starts and stops the mysql-proxy daemon
#
# chkconfig: - 78 30
# processname: mysql-proxy
# description: mysql-proxy is a proxy daemon for mysql
# Source function library.
. /etc/rc.d/init.d/functions
prog="/usr/local/mysql-proxy/bin/mysql-proxy"
# Source networking configuration.
if [ -f /etc/sysconfig/network ]; then
. /etc/sysconfig/network
fi
# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0
# Set default mysql-proxy configuration.
ADMIN_USER="admin"
ADMIN_PASSWD="admin"
ADMIN_LUA_SCRIPT="/usr/local/mysql-proxy/share/doc/mysql-proxy/admin.lua"
PROXY_OPTIONS="--daemon"
PROXY_PID=/var/run/mysql-proxy.pid
PROXY_USER="mysql-proxy"
# Source mysql-proxy configuration.
if [ -f /etc/sysconfig/mysql-proxy ]; then
. /etc/sysconfig/mysql-proxy
fi
RETVAL=0
start() {
echo -n $"Starting $prog: "
daemon $prog $PROXY_OPTIONS --pid-file=$PROXY_PID --proxy-address="$PROXY_ADDRESS" --user=$PROXY_USER --admin-username="$ADMIN_USER" --admin-lua-script="$ADMIN_LUA_SCRIPT" --admin-password="$ADMIN_PASSWORD"
RETVAL=$?
echo
if [ $RETVAL -eq 0 ]; then
touch /var/lock/subsys/mysql-proxy
fi
}
stop() {
echo -n $"Stopping $prog: "
killproc -p $PROXY_PID -d 3 $prog
RETVAL=$?
echo
if [ $RETVAL -eq 0 ]; then
rm -f /var/lock/subsys/mysql-proxy
rm -f $PROXY_PID
fi
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
condrestart|try-restart)
if status -p $PROXY_PIDFILE $prog >&/dev/null; then
stop
start
fi
;;
status)
status -p $PROXY_PID $prog
;;
*)
echo "Usage: $0 {start|stop|restart|reload|status|condrestart|try-restart}"
RETVAL=1
;;
esac
exit $RETVAL
将上述内容保存为/etc/rc.d/init.d/mysql-proxy,给予执行权限,而后加入到服务列表。
# chmod +x /etc/rc.d/init.d/mysql-proxy
# chkconfig --add mysql-proxy
3、为服务脚本提供配置文件/etc/sysconfig/mysql-proxy,内容如下所示:
# Options for mysql-proxy
ADMIN_USER="admin"
ADMIN_PASSWORD="admin"
ADMIN_ADDRESS=""
ADMIN_LUA_SCRIPT="/usr/local/mysql-proxy/share/doc/mysql-proxy/admin.lua"
PROXY_ADDRESS=""
PROXY_USER="mysql-proxy"
PROXY_OPTIONS="--daemon --log-level=info --log-use-syslog --plugins=proxy --plugins=admin --proxy-backend-addresses=192.168.2.128:3306 --proxy-read-only-backend-addresses=192.168.2.141:3306 --proxy-lua-script=/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua"
其中最后一行,需要按实际场景进行修改,例如:
PROXY_OPTIONS="--daemon --log-level=info --log-use-syslog --plugins=proxy --plugins=admin --proxy-backend-addresses=172.16.100.6:3306 --proxy-read-only-backend-addresses=172.16.100.7:3306 --proxy-lua-script=/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua"
其中的proxy-backend-addresses选项和proxy-read-only-backend-addresses选项均可重复使用多次,以实现指定多个读写服务器或只读服务器。
mysql-proxy的配置选项大致可分为帮助选项、管理选项、代理选项及应用程序选项几类,下面一起去介绍它们。
--help
--help-admin
--help-proxy
--help-all ———— 以上四个选项均用于获取帮助信息;
--proxy-address=host:port ———— 代理服务监听的地址和端口;
--admin-address=host:port ———— 管理模块监听的地址和端口;
--proxy-backend-addresses=host:port ———— 后端mysql服务器的地址和端口;
--proxy-read-only-backend-addresses=host:port ———— 后端只读mysql服务器的地址和端口;
--proxy-lua-script=file_name ———— 完成mysql代理功能的Lua脚本;
--daemon ———— 以守护进程模式启动mysql-proxy;
--keepalive ———— 在mysql-proxy崩溃时尝试重启之;
--log-file=/path/to/log_file_name ———— 日志文件名称;
--log-level=level ———— 日志级别;
--log-use-syslog ———— 基于syslog记录日志;
--plugins=plugin,.. ———— 在mysql-proxy启动时加载的插件;
--user=user_name ———— 运行mysql-proxy进程的用户;
--defaults-file=/path/to/conf_file_name ———— 默认使用的配置文件路径;其配置段使用[mysql-proxy]标识;
--proxy-skip-profiling ———— 禁用profile;
--pid-file=/path/to/pid_file_name ———— 进程文件名;
4、创建:/usr/local/mysql-proxy/share/doc/mysql-proxy目录下创建admin.lua
脚本内容 如下:
function set_error(errmsg)
proxy.response = {
type = proxy.MYSQLD_PACKET_ERR,
errmsg = errmsg or "error"
}
end
function read_query(packet)
if packet:byte() ~= proxy.COM_QUERY then
set_error("[admin] we only handle text-based queries (COM_QUERY)")
return proxy.PROXY_SEND_RESULT
end
local query = packet:sub(2)
local rows = { }
local fields = { }
if query:lower() == "select * from backends" then
fields = {
{ name = "backend_ndx",
type = proxy.MYSQL_TYPE_LONG },
{ name = "address",
type = proxy.MYSQL_TYPE_STRING },
{ name = "state",
type = proxy.MYSQL_TYPE_STRING },
{ name = "type",
type = proxy.MYSQL_TYPE_STRING },
{ name = "uuid",
type = proxy.MYSQL_TYPE_STRING },
{ name = "connected_clients",
type = proxy.MYSQL_TYPE_LONG },
}
for i = 1, #proxy.global.backends do
local states = {
"unknown",
"up",
"down"
}
local types = {
"unknown",
"rw",
"ro"
}
local b = proxy.global.backends[i]
rows[#rows + 1] = {
i,
b.dst.name, -- configured backend address
states[b.state + 1], -- the C-id is pushed down starting at 0
types[b.type + 1], -- the C-id is pushed down starting at 0
b.uuid, -- the MySQL Server's UUID if it is managed
b.connected_clients -- currently connected clients
}
end
elseif query:lower() == "select * from help" then
fields = {
{ name = "command",
type = proxy.MYSQL_TYPE_STRING },
{ name = "description",
type = proxy.MYSQL_TYPE_STRING },
}
rows[#rows + 1] = { "SELECT * FROM help", "shows this help" }
rows[#rows + 1] = { "SELECT * FROM backends", "lists the backends and their state" }
else
set_error("use 'SELECT * FROM help' to see the supported commands")
return proxy.PROXY_SEND_RESULT
end
proxy.response = {
type = proxy.MYSQLD_PACKET_OK,
resultset = {
fields = fields,
rows = rows
}
}
return proxy.PROXY_SEND_RESULT
end
5、启动服务:
mysql5.6双主双从及其高可用集群(MMM)
两台主mysql互为主从,两台mysql从服务都备份一个主服务器,然后再使用mysql-mmm套件进行读写分离。
先配置双主互备
1、首先关掉防火墙,配置IP地址。
2、在mysql配置文件中写入主从配置所需要的选项(双节点都配置,除了server-id不同)
server-id = 1 //节点表示,全局唯一
log-bin=mysql-bin //日志文件命名格式
relay-log = mysql-relay-bin //relay-log日志文件的命名格式
replicate-wild-ignore-table=mysql.% //复制过滤选项,过滤数据库mysql下的所有数据
replicate-wild-ignore-table=test.%
replicate-wild-ignore-table=information_schema.%
3、创建复制用户并授权(双节点都配置,除用户名和密码不一样,IP地址一定要用%,因为不能单指一台mysql服务器)
grant replication slave on *.* to 'sun1'@'10.10.10.%' identified by 'sun1021!';
4、在另一台mysql服务器中将这台mysql设为主服务器 !(master_log_file和master_log_pos这两个选项的值刚好是主服务器上的show master status查询的值!)
change master to \
-> master_host='10.10.10.118',
-> master_user='sun2',
-> master_password='sun1022!',
-> master_log_file='mysql-bin.000001',
-> master_log_pos=327;
5、启动slave服务器:start slave; 然后使用show slave status\G;查看传输状态。
6、然后再把从服务器作为主,在从服务器上创建复制用户。然后再让主服务器连接,最后,开启复制服务,在查看一下复制状态。
然后配置双从
1、在两台剩余的mysql上都连接同一个主mysql服务器,必须是同一个主服务器!
2、都开启slave服务即可!
最后配置MMM
1、安装MMM套件(配置好centos的yum源)
安装服务器端:yum -y install mysql-mmm*
每个mysql节点:yum -y install mysql-mmm-agent
2、在所有mysql主机的配置文件中写入: read_only=1,这个参数可以对所有非临时表进行只读控制。
3、在所有mysql节点创建账号monitor user(对所有mysql服务器做健康检查),monitor agent(切换只读模式和同步Master信息)
创建monitor user:grant replication client on *.* to 'monitor'@'10.10.10.%' identified by 'nihao1!';
创建monitor agent:grant super, replication client, process on *.* to 'agent'@'10.10.10.%' identified by 'nihao2!';
4、设置主配置文件(/etc/mysql-mmm/)
mmm_mon.conf :仅在MMM节点上配置,用于监控一些参数
mmm_common.conf :在所有的MMM节点配置,设置读写节点的IP地址和配置虚拟ip
mmm_agent.conf :在所有的mysql节点上配置,设置每个节点的标识
4.1、配置mmm_common.conf配置文件
active_master_role writer //设置这个参数时,所有mysql节点都应该设置read-only=1,
cluster_interface eth0 //配置的网络接口,不能指定子接口
pid_path /var/run/mysql-mmm/mmm_agentd.pid //设置pid文件位置
bin_path /usr/libexec/mysql-mmm/ //指定MMM可执行文件路径
replication_user replicant //设置复制的用户名
replication_password slave //设置复制的密码
agent_user mmm_agent //设置更改只读操作的用户
agent_password RepAgent //设置更改只读操作用户的密码
ip 192.168.100.49 //设置db1的物理ip地址
mode master //设置db1的角色
peer db2 //与db1对等的主机名,也就是db1和db2均为Master角色
ip 192.168.100.51 //设置db3的物理ip地址
mode slave //设置db3的角色
hosts db1, db2 //设置可执行写操作的主机
ips 192.168.100.250 //设置可写的虚拟ip
mode exclusive //设置角色互斥,互斥角色只有一个ip,并且同一时间
hosts db1, db2 //设置可执行写操作的主机
ips 192.168.100.251, 192.168.100.252 //设置可写的虚拟ip
mode balanced //设置角色为负载均衡,可以有多个IP地址,这些IP地址被均衡的动态的分配给多台mysql主机
4.2、配置mmm_agent.conf配置文件
this db1 //指定了mysql节点对应的主机名
4.3、配置mmm_mon.conf配置文件
include mmm_common.conf
ip 127.0.0.1 //为了安全性,设置只在本机监听,默认监听端口9988
pid_path /var/run/mysql-mmm/mmm_mond.pid //设置mmm_mond进程的PID文件位置
bin_path /usr/libexec/mysql-mmm //MMM可执行文件路径
status_path /var/lib/mysql-mmm/mmm_mond.status //MMM集群的状态文件
ping_ips 192.168.100.50 //用于测试网络可用性的IP地址列表,不要写入本机的IP地址
auto_set_online 60 //是否设置自动上线,
# The kill_host_bin does not exist by default, though the monito
r will
# throw a warning about it missing. See the section 5.10 "Kill
Host
# Functionality" in the PDF documentation.
#
# kill_host_bin /usr/libexec/mysql-mmm/monitor/kill_host
#
monitor_user mmm_monitor //monitor账号
monitor_password RepMonitor //monitor密码
debug 0 //MMM管理端的运行模式,1为debug模式,0为正常运行
(注意:若没有PID文件,我们要手动创建:touch /var/run/mysql-mmm/mmm_mond.pid)
5、配置mysql-mmm-agent文件,确保此文件在所有mysql节点都为ENABLED=1
6、所有的配置文件权限最好都为640
7、启动
MMM管理节点:/etc/init.d/mysql-mmm-monitor start
mysql节点:/etc/init.d/mysql-mmm-agent start
8、命令
mmm_control show //查看群集运行状态
例: db1(10.10.10.116) master / ONLINE. Roles: reader(10.10.10.13), writer(10.10.10.11)
集群节点的物理IP地址 mysql角色 集群节点状态 集群中读写角色对应的虚拟IP地址(r:读,w:写)
集群节点状态:
ONLINE :节点运行正常,处于在线状态
ADMIN_OFFLINE :节点通过手动模式离线的
HARD_OFFLINE :节点处于离线状态, 一般由于MMM集群脚本执行ping操作失败或检测mysql失败而切换的一种状态
AWAITING_RECOVERY :表示等待恢复状态,如果MMM集群设置的是active运行模式,那么此状态将会自动恢复为ONLINE状态
REPLICATION_FAIL :表示主从复制失败状态,一般由于复制主线程没有运行导致的
REPLCATION_DELAY :表示复制日志有延时,一般由检查日志失败导致的
mmm_control mode //查看MMM集群目前处于什么运行模式
模式类型:
active :表示主动模式,该模式是默认的,master节点故障另一个master顶上,继续服务。slave故障另一个slave节点顶上。
manual :表示手动模式,该模式不会执行自动切换操作,若某一节点故障,手动切换到其他节点。
passive :表示被动模式,在该模式下,MMM管理端不会改变集群中节点的角色,也不更新状态文件和发送任何信息给每个agent节点,在启动的节点发生冲突时,将会进入被动模式。
mmm_control checks all //查看所有MMM集群节点的运行状态,会对每个节点执行四项检查,并确定检查是否成功。
四项检查含义:
ping :检测网络可用性
mysql :检测mysql服务器是否运行正常
rep_threads :检测mysql的复制线程是否正常运行
rep_backlog :检测mysql的复制日志是否有挤压
(在这四项检测中,任何一项出现问题,都对进行角色切换操作!)
9、读写分离测试
注意:登录的时候登录用mmm_control show列表中的主Master中能够写的虚拟IP地址!!!
例子:db1(10.10.10.116) master / ONLINE. Roles: reader(10.10.10.13), writer(10.10.10.11)
使用这个虚拟IP登录
登录mysql服务器,向里面创建一个库或者表,然后查看其他节点有没有同步过去。
10、