目录
1.mysql数据库的安装部署
tar zxf mysql-boost-5.7.31.tar.gz #解压
cd mysql-5.7.31/
yum install cmake #安装cmake
cmake ../ -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql -DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock -DWITH_INNOBASE_STORAGE_ENGINE=1 -DSYSCONFDIR=/etc -DENABLED_LOCAL_INFILE=1 -DWITH_EXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8mb4 -DDEFAULT_COLLATION=utf8mb4_unicode_ci -DWITH_BOOST=/root/mysql-5.7.31/boost/boost_1_59_0 #配置测试
缺少两个插件,下载安装
yum install bison.x86_64
yum install gcc-c++ -y
cmake ../ -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql -DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock -DWITH_INNOBASE_STORAGE_ENGINE=1 -DSYSCONFDIR=/etc -DENABLED_LOCAL_INFILE=1 -DWITH_EXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8mb4 -DDEFAULT_COLLATION=utf8mb4_unicode_ci -DWITH_BOOST=/root/mysql-5.7.31/boost/boost_1_59_0 ##再次测试
make #编译
make install #安装
安装完成
cd #切换环境到家目录
vim .bash_profile #配置全局文件,添加mysql路径
PATH=$PATH:$HOME/bin:/usr/local/lnmp/php/bin:/usr/local/mysql/bin
source .bash_profile #文件生效
mkdir -p /data/mysql #建立mysql目录
useradd -M -d /data/mysql -s /sbin/nologin mysql #建立mysql用户
chown mysql.mysql /data/mysql/ #设置目录的用户及用户组
vim /etc/my.cnf #修改mysql文件的路径,具体见下图
cd data/mysql/
mysqld --initialize --user=mysql #mysql初始化,初始化后最后会显示初始化后的密码,登陆时需要使用
cd /usr/local/mysql/support-files/
ls
cp mysql.server /etc/init.d/mysqld #将mysql数据库服务拷贝到指定目录下
/etc/init.d/mysqld start #指定路径启动服务
mysql_secure_installation #更改密码登陆数据库
首次登陆需要时定一些参数,我这里设定如下:
\\\
Press y|Y for Yes, any other key for No: n
Change the password for root ? ((Press y|Y for Yes, any other key for No) : n
Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y
\\\
mysql数据库安装配置完毕!
可以使用mysql -p 登陆
2.网页版数据库mysql
下载 phpMyAdmin-5.0.2-all-languages.zip 压缩包
unzip phpMyAdmin-5.0.2-all-languages.zip #解压
mv phpMyAdmin-5.0.2-all-languages /usr/local/nginx/html/phpadmin #移动到nginx的html目录下
systemctl start php-fpm.service #开启php-fpm服务
systemctl enable php-fpm.service #设置开机自启
vim /usr/local/lnmp/php/etc/php.ini #编辑php文件,添加mysql文件的路径
systemctl reload php-fpm #修改完文件,重载
编辑php.ini文件界面如下:
此时确保nginx开启的情况下,浏览器访问172.25.35.1/phpadmin
建立一个westos库,linux表,插入一组数据
进入数据库查看westos.linux表数据
3.MySQL异步复制
异步复制:配置文件/etc/my.cnf最后写了同步方式,是使用二进制日志的方式进行复制,master做的任何操作都会记录在日志里,master不会等待slave复制完之后再开始下一步,一直都是自己做自己的,不会管slave的状态,自己做好了就写在自己的日志里,能否同步成功取决于slave自身,而slave能否同步成功取决于两个线程,I/O线程和sql线程,I/O线程不是yes,则获取不到master的日志,(master的dumper线程会和slave的I/O线程进行通信),slave把二进制日志拿过来之后,先把master所作的事情写在中继日志relay_log里,然后sql线程回放(replay),把relay_log日志里的事再做一次,所以异步复制slave的数据比master稍慢一些。master主机不会管slave两个线程的状态异常,如果状态异常,这就会导致数据不同步。
异步复制失败的原因可能是两台主机数据不同步,master数据比slave数据多太多。同步之前数据已经不一样,所以我们需要通过备份导入的方式同步之前使两者保持一致。
1.mysql主从复制
复制原理
mysql主从复制是一个异步复制的过程。从一个实例(master)复制到另一个实例(slave),整个过程要由master上的I/O进程和slave上的sql进程和I/O进程共同完成。
首先master必须打开binary log(bin-log),因为整个复制过程实际上就是slave端从master端获取相应的二进制日志,然后在本地完全顺序的执行日志中纪录的各种操作。
配置slave数据库
server1中的mysql作为主数据库(master)server2中的mysql作为从数据库(slave)
要将设定slave数据库的配置文件以及在成功与master主从复制同步之前需要同步master数据库中的数据
server1中将数据库scp给server2:
scp -r /usr/local/mysql server2:/usr/local
scp /etc/my.cnf server2:/etc/
配置server2中的mysql环境变量文件:
vim .bash_profile #配置全剧文件,添加路径使mysql全局生效
source .bash_profile #使文件生效
which mysql #查看是否全局生效
新建用户,建立mysql目录,数据库初始化,更改密码登陆:
useradd -M -d /data/mysql -s /sbin/nologin mysql #建立用户
mkdir -p /data/mysql #建立目录
cd /data/mysql/
mysqld --initialize --user=mysql #初始化,注意初始化后的密码
cd /usr/local/mysql/support-files/
ls
cp mysql.server /etc/init.d/mysqld #将mysql数据库服务拷贝到指定目录下
/etc/init.d/mysqld start #指定路径启动服务
mysql_secure_installation #更改密码登陆数据库
server2的数据库部署完毕
主从复制过程
在master中
master设置server-id
vim /etc/my.cnf
\\\
log-bin=mysql-bin
server-id=1
\\\
master创建复制用户,并授权
mysql -p #进入数据库
create user 'redhat'@'%' identified by 'westos'; #创建用户repl
GRANT REPLICATION SLAVE ON *.* TO 'redhat'@'%'; #授权
show master status; #查看状态
主从复制同步之前必须保持两个数据库已经存在的数据相同,所以需要将server1的备份文件导入在slave的库中
mysqldump -p westos > dump.sql #备份server1数据库
scp dump.sql server2: #传输给server2
在server2中必须提前建立和server1一样的数据库westos
mysql -p westos < dump.sql #备份导入server2数据库中
此时两个数据库已经完全一样
在slave中
slave配置server-id
vim /etc/my.cnf
\\\
log-bin=mysql-bin
server-id=1
\\\
slave配置复制:
mysql -p #进入数据库
mysql> CHANGE MASTER TO
-> MASTER_HOST='172.25.35.1',
-> MASTER_USER='redhat',
-> MASTER_PASSWORD='Westos',
-> MASTER_LOG_FILE='mysql-bin.000001',
-> MASTER_LOG_POS=1770;
主从复制完毕,在server2的mysql中输入
show slave status\G;
如果可以看到两个yes ,则同步成功
在master数据库中插入一组数据
在slave数据库中查看
2.GTID复制
配置一个server2作为server1的slave,server3作为server2的slave 基于一主一从
master1中:
vim /etc/my.cnf
\\\
[mysqld]
gtid_mode=ON
enforce-gtid-consistency=ON
\\\
/etc/init.d/mysqld restart
server2既作为server1的从,也作为server3的主
server3作为server2的slave
这样的方式相比较从属组要简单的多,配置同步主从时不需要查看主数据库的日志文件及编号
3.mysql延迟同步
延迟同步的目的是:防止主库的误操作造成从库也被误操作
Master_Log_File 主库mysql的binlog文件名
Read_Master_Log_Pos 读取主库mysql的binlog文件的位置
Exec_Master_Log_Pos 从库执行主库mysql的binlog文件的位置
Seconds_Behind_Master 从库延迟主库同步的时间单位秒
SQL_Delay 设置从库服务器相较于主库服务器的延迟同步时间
server2作为server1的slave
在slave上执行
stop slave;
change master to master_delay = 30; #修改延迟荣不时间为30秒
show slave status\G; #查看状态
start slave; #此时我们的延迟同步已经设置为30秒
在master端插入一条数据
可以看到server端延迟生效
直到延迟30秒过后,Seconds Behind Master显示0
查看插入的数据,发现已同步
4. mysql并行复制
背景:因为I/O thread和SQL thread是单线程工作的,而Master是可以多线程写入的,所以主从难免造成延迟,基于此,在5.6,5.7,8.0版本都在SQL线程上实现了多线程,来提升slave的并发度
原理:MySQL5.6开启并行复制功能后,SQL线程变成coordinator线程,由其判断是否可以并发执行,这意味着一个worker线程可以处理一个数据库的连续事务,而不用等待其它数据库完成
实验:配置好主从复制环境
方法一:
在mysql中输入命令设置并行复制的workers(临时的,重启mysql后就会成为默认值)
mysql> stop slave;
Query OK, 0 rows affected (0.03 sec)
mysql> set global slave_parallel_workers=16;
Query OK, 0 rows affected (0.05 sec)
mysql> start slave;
Query OK, 0 rows affected, 1 warning (0.07 sec)
SHOW VARIABLES LIKE 'slave_parallel_%'; #查看设置是否成功
show processlist #看到16个SQL线程的状态
方法2:
在/etc/my.cnf文件中配置并行复制
vim /etc/my.cnf
\\\
relay_log_info_repository = TABLE #把relay.info记录在slave_relay_log_info表里
master_info_repository = TABLE #master.info记录在表里
relay_log_recovery = on #默认是开启的(数据库启动后立即启动自动relay log恢复)
slave_parallel_workers=16 #设置并行最大线程为16
\\\
/etc/init.d/mysqld restart #重启
mysql -p #进入数据库
SHOW VARIABLES LIKE 'slave_parallel_%'; #查看设置是否成功
show processlist #看到16个SQL线程的状态
查看到并行workers设置成功
查看发现这里我们只有一个线程在待命;
4.mysql数据库的半同步复制
半同步复制在异步复制过程中添加了一个同步步骤。 这意味着主节点在提交时需要等待从节点确认它已经接收到事务。只有这样,主节点才能继续提交操作。
这种模式下主节点只需要接收到其中一台从节点的返回信息,就会commit;否则需要等待直到超时时间然后切换成异步模式再提交;这样做的目的可以使主从数据库的数据延迟缩小,可以提高数据安全性,确保了事务提交后,binlog至少传输到了一个从节点上,不能保证从节点将此事务更新到db中。性能上会有一定的降低,响应时间会变长。
master:
INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
SET GLOBAL rpl_semi_sync_master_enabled =1;
show status like 'Rpl_semi%';
slave:
INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
SET GLOBAL rpl_semi_sync_slave_enabled = 1;
STOP SLAVE IO_THREAD;
START SLAVE IO_THREAD;
半同步复制配置成功,此时在master数据库当中插入新的数据将会由主节点提交给从节点确认,一直等待直至超时
测试的时候可以关闭slave节点的mysql数据库,在master中插入数据,发现要等十秒钟才能提交,则配置成功!
5.组复制(全同步)
MySQL组复制是MySQL 5.7.17开始引入的新功能,为主从复制实现高可用功能。它支持单主模型和多主模型两种工作方式(默认是单主模型)。
单主模型:从复制组中众多个MySQL节点中自动选举一个master节点,只有master节点可以写,其他节点自动设置为read only。当master节点故障时,会自动选举一个新的master节点,选举成功后,它将设置为可写,其他slave将指向这个新的master。
多主模型:复制组中的任何一个节点都可以写,因此没有master和slave的概念,只要突然故障的节点数量不太多,这个多主模型就能继续可用。
多主模式配置
从server1到server3 设置为master1到master3
恢复环境,更改配置文件
master1: 删除/data/mysql下内容,重新初始化
/etc/init.d/mysqld stop
cd /data/mysql
rm -fr * #所有文件全部删除,之后会重新初始化
uuidgen #随机生成UUID
vim /etc/my.cnf #编辑配置文件
\\\
server-id=1
gtid_mode=ON
enforce-gtid-consistency=true
master_info_repository=TABLE
relay_log_info_repository=TABLE
binlog_checksum=NONE #关闭binlog校验
log_slave_updates=ON
log_bin=binlog
binlog_format=ROW #组复制依赖基于行的复制格式
transaction_write_set_extraction=XXHASH64
group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"
plugin_load_add='group_replication.so'
group_replication_start_on_boot=off
group_replication_local_address= "server1:33061"
group_replication_group_seeds= "server1:33061,server2:33061,server3:33061"
group_replication_bootstrap_group=off ##插件是否自动引导,这个选项一般都要off掉,只需要由发起组复制的节点开启,并只启动一次,如果是on,下次再启动时,会生成一个同名的组,可能会发生冲突
group_replication_ip_whitelist="172.25.7.0/24,127.0.0.1/8"
group_replication_enforce_update_everywhere_checks=ON
group_replication_single_primary_mode=OFF
group_replication_allow_local_disjoint_gtids_join=ON
\\\
重新初始化,启动mysql 修改设定
mysqld --initialize --user=mysql #初始化
/etc/init.d/mysqld start #启动数据库
mysql_secure_installation #更改密码登陆
mysql -pwestos
alter user root@localhost identified by 'westos'; #更改用户root密码
SET SQL_LOG_BIN=0; #关闭二进制日志,防止传到其他的server上
CREATE USER rpl@'%' IDENTIFIED BY 'westos'; #创建用户用于复制
GRANT REPLICATION SLAVE ON *.* TO rpl@'%'; #给所有库的所有表
FLUSH PRIVILEGES; #刷新授权表
SET SQL_LOG_BIN=1; #设定完毕,开启日志
CHANGE MASTER TO MASTER_USER='rpl', MASTER_PASSWORD='westos' FOR CHANNEL 'group_replication_recovery';
SET GLOBAL group_replication_bootstrap_group=ON; #组复制发起节点开启这个参数
START GROUP_REPLICATION; #开启组复制
SET GLOBAL group_replication_bootstrap_group=OFF;
SELECT * FROM performance_schema.replication_group_members; #查看组状态
master2:
master2和master1前面配置相同,在修改mysql设定的时候不需要开启节点这个参数
vim /etc/my.cnf (此处address需要修改为server2)
master3:
master3和1、2一样配置/etc/my.cnf文件
删除/data/mysql下的内容之后重新初始化,启动mysql 修改设定
mysql数据库多主组搭建完毕,此时在master1、2、3中插入新数据 并查看
6.mysql路由器
MYSQL Router原理:
MySQL Router是处于应用client和dbserver之间的轻量级代理程序,它能检测,分析和转发查询到后端数据库实例,并把结果返回给client。是mysql-proxy的一个替代品Router实现读写分离,程序不是直接连接数据库IP,而是固定连接到mysql router。MySQL Router对前端应用是透明的。应用程序把MySQL Router当作是普通的mysql实例,把查询发给MySQL Router,而MySQL Router会把查询结果返回给前端的应用程序。
读写分离原理
MySQL Router接受前端应用程序请求后,根据不同的端口来区分读写,把连接读写端口的所有查询发往主库,把连接只读端口的select查询以轮询方式发往多个从库,从而实现读写分离的目的。读写返回的结果会交给MySQL Router,由MySQL Router返回给客户端的应用程序。
安装部署mysql route
下载地址:
提供不同平台,二进制包和rpm包,选择合适安装方式即可,但是下载二进制包需要手动创建日志目录,配置文件设置。启动还需要自己编写启动脚本, mysql route官方没有提供
我这里直接下载到rpm包mysql-router-community-8.0.21-1.el7.x86_64.rpm
新建虚拟机server4,在server4中下载路由插件
rpm -ivh mysql-router-community-8.0.21-1.el7.x86_64.rpm
vim /etc/mysqlrouter/mysqlrouter.conf #编写配置文件
\\\
[routing:ro]
bind_address = 0.0.0.0
bind_port = 7001
destinations = 172.25.35.1:3306,172.25.35.2:3306,172.25.35.3:3306
routing_strategy = round-robin
[routing:rw]
bind_address = 0.0.0.0
bind_port = 7002
destinations = 172.25.35.1:3306,172.25.35.2:3306,172.25.35.3:3306
routing_strategy = first-available
\\\
systemctl restart mysqlrouter.service #重新启动路由器即可
路由功能已开启,我们在路由器列表中写入了server1、2、3三个数据库,可以配置为主从同步,也可以是组同步(一主多从); 我这里配置的是组同步
读写分离测试
在server1中授权一个用户
grant all on test.* to ‘zca’@’%’ identified by ‘westos’;
验证读负载均衡:从结果看到每次读都是访问不同的主机
mysql -h 172.25.35.4 -P 7001 -uzca -pwestos -e “select @@hostname”
验证写:可以看到每次写都是写到主节点 ,当主节点停掉或者挂掉就会有另一个节点的数据库接管写功能
7.MHA高可用
实验环境配置:
删除server1、server2、server3中/data/mysql下的所有文件,编辑/etc/my.conf 内容如下
删除关于之前组同步的策略,只需要开启gtid即可
master_info_repository=TABLE 将master中的操作存入表中(安全性更高)
mysqld --initialize-insecure --user=mysql 重新初始化(-insecure无密码)
server1中无密码进入mysql(server1作为master)
grant replication slave on *.* to repl@'%' identified by 'westos'; #授权用户
alter user root@'%' identified by 'westos'; #更改root用户密码
grant all on *.* to root@'%' identified by 'westos'; #授权
server2、3初始化完毕后,修改/etc/my.conf文件
启动mysql
#设定主从
change master to master_host='172.25.7.1',master_user='repl',master_password='westos',master_auto_position=1;
此时一主两从设定完毕
下载MHA-7高可用程序
在server4上
/etc/init.d/mysqld stop
systemctl stop mysql.service
lftp 172.25.254.250
cd /pub/docs/mysql/MHA-7
将这个目录下载到主机
将mha4mysql-node-0.58-0.el7.centos.noarch.rpm包传输给server2、3
scp mha4mysql-node-0.58-0.el7.centos.noarch.rpm server2:
scp mha4mysql-node-0.58-0.el7.centos.noarch.rpm server3:
分别安装
yum install mha4mysql-node-0.58-0.el7.centos.noarch.rpm -y #因为这个包有依赖性,所以不能使用rpm指令安装
cd MHA-7
yum install *.rpm
mkdir /etc/masterha
cd /etc/masterha
vim app1.conf
\\\
[server default]
manager_workdir=/etc/masterha #manager工作目录
manager_log=/etc/masterha/mha.log #manager日志文件
master_binlog_dir=/data/mysql #mysql主服务器的binlog目录
#master_ip_failover_script=/usr/bin/master_ip_failover #failover自动切换脚本
#master_ip_online_change_script= /usr/local/bin/master_ip_online_change #手动切换脚本
user=root #mysql主从节点的管理员用户密码,确保可以从远程登陆
password=westos
ping_interval=3 #发送ping包的时间间隔,默认是3秒,尝试三次没有回应的时候自 动进行failover
remote_workdir=/tmp #远端mysql在发生切换时binlog的保存位置
repl_user=repl #主从复制用户密码
repl_password=westos
#report_script=/usr/local/send_report #发生切换后发送报警的脚本
secondary_check_script=/usr/bin/masterha_secondary_check -s 172.25.35.2 -s 172.25.35.3
#shutdown_script="" #故障发生后关闭故障主机脚本,防止脑裂
ssh_user=root #ssh用户名
[server1]
hostname=172.25.35.1
port=3306
#candidate_master=1
#check_repl_delay=0
[server2]
hostname=172.25.35.2
port=3306
candidate_master=1 #指定failover时此slave会接管master,即使数据不是最新的。
check_repl_delay=0 #默认情况下如果一个slave落后master 100M的relay logs的话,MHA将不会选择该slave作为一个新的master,因为对于这个slave的恢复需要花费很长时间,通过设置check_repl_delay=0,MHA触发切换在选择一个新的master的时候将会忽略复制延时,这个参数对于设置了candidate_master=1的主机非常有用,因为这个候选主在切换的过程中一定是新的master
[server3]
hostname=172.25.35.3
port=3306
#no_master=1 #始终是slave
\\\
在server1\2\3中,任意一台中,进入数据库,对远程用户进行数据库登录授权
grant all on *.* to root@'%' identified by 'westos'; ##作授权
flush privileges; ##刷新授权列表
建立密钥
在server1中建立密钥
ssh-keygen #建立密钥
ssh-copy-id server1 #拷贝给自己和server2、server3、server4
将整个ssh文件传输给server1,server2,server3、server4 所有主机可以无密码连接
scp -r .ssh/ server1:
scp -r .ssh/ server2:
scp -r .ssh/ server3:
scp -r .ssh/ server4:
检测实验环境是否配置成功
在server4中
masterha_check_ssh --conf=/etc/masterha/app1.conf #检测ssh
masterha_check_repl --conf=/etc/masterha/app1.conf #检测repl,查看一主两从状态是否正确
全部成功后可以输入指令进行手动切换或脚本自动切换
手动切换master
masterha_master_switch --conf=/etc/masterha/app1.conf --master_state=alive --new_master_host=172.25.7.2 --new_master_port=3306 --orig_master_is_new_slave --running_updates_limit=10000 #手动切换master,将还在运行的master替换为备用master
此时备用master-server2上线 在server1、3中查看slave的状态发现,原来的master由1变成了2,slave变为了1、3。
将master切换为server1
在server1中关闭数据库,测试master停止运行后的手动切换
masterha_master_switch --master_state=dead --conf=/etc/masterha/app1.conf --dead_master_host=172.25.35.1 --dead_master_port=3306 --new_master_host=172.25.35.2 --new_master_port=3306 --ignore_last_failover #此命令是将已经宕机的数据库给替换
这里第一次故障切换master,--ignore_last_failover参数可以不加
在server3中查看slave状态
现在server1变为了master ,server3变为了slave,但server2需要重新手动输入使其变为server1的slave
自动切换master
将master切换为server1
masterha_manager --conf=/etc/masterha/app1.conf & #开启自动切换master,并将此进程打入后台
ps ax #进行监控
此时关闭master会自动切换为server2为master
切换master时,server4会受到提示,查看/etc/masterha目录下的内容会多两个文件,app1.failover.complete 和 mha.log(日志文件,自动切换后就会生成)
app1.failover.complete是锁定文件,文件中没有内容,当故障切换master时,默认八小时内最多切换一次,所以如果现在的master又宕掉MHA就会查看目录下是否有app1.failover.complete文件,有的话不进行切换,会报错! (想切换的时候需要删除这两个文件)
或者在手动切换时
masterha_master_switch --master_state=dead --conf=/etc/masterha/app1.conf --dead_master_host=172.25.7.1 --dead_master_port=3306 --new_master_host=172.25.7.2 --new_master_port=3306 –ignore_last_failover
加上–ignore_last_failover参数,跳过查看这个文件的步骤
漂移IP——VIP设定
当master切换的时候用户访问不知道master切换到哪一台主机,我们可以使用路由器或者设定VIP用户
目前是一主两从
server2为master,server1、3是slave
在master主机中添加VIP用户
ip addr add 172.25.35.100/24 dev eth0
在server4当中下载脚本,通过脚本使得VIP用户跟着master一起转移
cd /etc/masterha/
lftp 172.25.254.250
cd /pub/docs/mysql
get master_ip_failover master_ip_online_change
exit
vim master_ip_failover #在脚本中更改VIP用户IP(faliover脚本是当master宕机时用道德)
vim master_ip_online_change #在脚本中更改VIP用户IP(online脚本是当你在线手动更改master时甬道的)
vim app1.conf #将脚本两行的策略注释取消
master_ip_failover文件中修改参数: my $vip='172.25.35.100/24';
app1.conf 去掉注释的两行,修改路径
配置文件和脚本编辑之后进行检测
masterha_check_repl --conf=/etc/masterha/app1.conf
测试成功,现在VIP用户在server2中(master)
开启自动替换master
masterha_manager --conf=/etc/masterha/app1.conf &
停止server2的数据库
/etc/init.d/mysqld stop
此时master将会自动切换为server1
查看ip发现VIP用户随着master转移到了serve1当中