Linux企业运维 6.5 --mysql 数据库

目录

1.mysql数据库的安装部署

2.网页版数据库mysql

3.MySQL异步复制 

1.mysql主从复制

配置slave数据库

主从复制过程 

2.GTID复制

3.mysql延迟同步

4. mysql并行复制

4.mysql数据库的半同步复制

5.组复制(全同步)

6.mysql路由器 

7.MHA高可用

实验环境配置:

下载MHA-7高可用程序

 手动切换master

自动切换master 

漂移IP——VIP设定


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当中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值