第三章 MySQL企业常用架构应用实战
1,下载二进制安装包
2,mv
mysql-5.7.17-linux-glibc2.5-x86_64 /usr/local/mysql
3, chown -R mysql:mysql mysql
4,cd /u sr/local/mysql/scripts/ &&
5, ./mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
6,接着启动mysql,mysql 安装完成。
一,实验环境:
172.16.213.232 为主
172.16.213.233 为备
在232,233 机器都执行上面1-6步骤然后实现mysql安装。
接下来就是配置主从配置了,如下:
二,
2-1,MySQL 主从复制的配置还是比较简单的,仅仅需要修改 MySQL配置文件即可
主的配置:(replicate-wild-ignore-table=mysql.% 忽略mysql库所有的表的同步)
从的配置:
2-2,手动同步数据库
如果 DB1 上已经有 mysql 数据,那么在执行主主互备之前,需要将 DB1 和 DB2 上两个
mysql 的数据保持同步,首先在 DB1 上备份 mysql 数据,执行如下 SQL 语句:
mysql>FLUSH TABLES WITH READ LOCK;
Query OK, 0 rows affected (0.00 sec)
不要退出这个终端,否则这个锁就失效了。在不退出终端的情况下,再开启一个终端直
接打包压缩数据文件或使用 mysqldump 工具来导出数据。这里通过打包 mysql 文件来完成
数据的备份,操作过程如下:
[root@DB1 ~]# cd /var/lib/
[root@DB1 lib]# tar zcvf mysql.tar.gz mysql
[root@DB1 lib]# scp mysql.tar.gz DB2:/var/lib/
将数据传输到 DB2 后,依次重启 DB1 和 DB2 上面的 mysql。
2-3,创建复制用户并授权(在主库创建)
2-4,登陆从库操作 (在从库操作):
再开启同步:
2-5,接下来就是在master 创建数据,验证是否同步到slave。
2-6,到这里,实现的是单向主从配置,要想实现互为主从,也就是双主配置其实就是将从的操作和单向主的操作重复一遍就可以了。
具体操作如下:修改从的配置,原来的主配置就不用修改了。
2-7,接着重启生效。
2-8,再登陆从的mysql,创建复制的用户授权。
2-9,再在的新的从,进行同步操作
2-10,开启同步(这个是在172.16.213.232操作,因为现在它做的是从)
2-11,接着查看状态:
2-12 到此就配置完了互为主从的配置,但是这样的双主在实际工作中没有什么意义,所以就需要再配置一个keepalived 实现双主的高可用。
三,配置 KeepAlived 实现 MySQL 双主高可用
在进行高可用配置之前,首先需要在 172.16.213.232 和 172.16.213.233 服务器上安装 KeepAlived 软件。关于
KeepAlived 会在后面做详细介绍,这里主要关注下 KeepAlived 的安装和配置,这里直接通过
yum 方式进行安装,安装过程如下:
[root@keepalived-master app]#yum install ipvsadm安装完成后,进入keepalived 的配置过程。
下面是 DB1 服务器上/etc/keepalived/keepalived.conf 文件的内容。
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id MySQLHA_DEVEL
}
vrrp_script check_mysqld {
script "/etc/keepalived/mysqlcheck/check_slave.sh " #检测 mysql 复制状态的脚本
interval 2
}
vrrp_instance HA_1 {
state MASTER #如果是不抢占模式,需要在 DB1 和 DB2 上均配置为 BACKUP
interface eth0
virtual_router_id 80
priority 100
advert_int 2
#nopreempt #配置不抢占模式,只在优先级高的机器上设置即可,优先级低的机器不设置
authentication {
auth_type PASS
auth_pass qweasdzxc
}
track_script {
check_mysqld
}
virtual_ipaddress {
192.168.88.10/24 dev eth0 #mysql 的对外服务 IP,即 VIP
}
}
其中,/etc/keepalived/mysqlcheck/check_slave.sh文件的内容为:
#!/bin/sh
slave_is=($(/usr/local/mysql/bin/mysql -e "show slave status\G"|grep "Slave_.*_Running" |awk
‘{print $2}‘))
if [ "${slave_is[0]}" = "Yes" -a "${slave_is[1]}" = "Yes" ]
then
exit 0
else
exit 1
fi
这是个用 shell 写的检测 mysql 复制状态的脚本,需要事先设置mysql用户名和密码,但在使
用前要保证此脚本有可执行权限。
接着将 keepalived.conf 文件和 check_slave.sh文件复制到 DB2 服务器上对应的位置,然
后将 DB2 上 keepalived.conf 文件中priority 值修改为 90。
在完成所有配置后,分别在 DB1和 DB2 上启动 keepalived 服务,在正常情况下 VIP 地址
应该运行在 DB1 服务器上。
3、测试 MySQL 主从同步功能
为了验证 mysql 的复制功能,可以编写一个简单的程序进行测试,也可以通过远程客户
端登录进行测试。这里通过一个远程 mysql 客户端,然后利用 mysql 的VIP 地址登录,看是
否能登录,并在登录后进行读、写操作,看看 DB1 和 DB2 之间是否能够实现数据同步。由
于是远程登录测试,因此 DB1和 DB2 两台 MySQL 服务器都要事先做好授权,允许从远程登
录。
4、测试 KeepAlived 实现 MySQL 故障转移
为了测试 KeepAlived 实现的故障转移功能,需要模拟一些故障,比如,可以通过断开 DB1 主机的网络、关闭 DB1主机、关闭 DB1 上 mysql 服务等各种操作实现,这里在 DB1 服务器 上关闭mysql 的日志接收功能,以此来模拟 DB1 上 mysql 的故障。由于在 DB1 和 DB2 服务 器上都添加了监控 mysql 运行状态的脚本 check_slave.pl,因此当关闭 DB1的 mysql 日志接收 功能后,KeepAlived 会立刻检测到,接着执行切换操作。
四,