使用MHA做MySQL的高可用
使用MHA做MySQL的高可用
主库:192.168.0.11
备选主库:192.168.0.12
从库:192.168.0.13
监控机:192.168.0.10
首先在三台机器上安装mysql(监控机的mysql先不装,以后再说)。
我使用percona server(一个mysql的改进版。据说比mysql性能更好些)。
[root@cluster1 ~]# tar zxvf Percona-Server-5.5.21-rel25.1-234.Linux.i686.tar.gz -C /usr/local/
[root@cluster1 ~]# cd /usr/local/
[root@cluster1 local]# mv Percona-Server-5.5.21-rel25.1-234.Linux.i686 mysql
[root@cluster1 local]# useradd -s /bin/false -M mysql
[root@cluster1 mysql]# cd /usr/local/mysql/
[root@cluster1 mysql]# chown -R mysql.mysql .
[root@cluster1 mysql]# cp support-files/my-medium.cnf /etc/my.cnf
[root@cluster1 mysql]# ./scripts/mysql_install_db --user=mysql
[root@cluster1 mysql]# cp support-files/mysql.server /etc/init.d/mysqld
[root@cluster1 mysql]# chmod +x /etc/init.d/mysqld
[root@cluster1 mysql]# echo "/usr/local/mysql/lib" >> /etc/ld.so.conf
[root@cluster1 mysql]# ldconfig
[root@cluster1 mysql]# /etc/init.d/mysqld start
[root@cluster1 mysql]# chkconfig --add mysqld
[root@cluster1 mysql]# chkconfig --level 235 mysqld on
注意“my.cnf”拷贝过去之后最好指定“basedir”和“datadir”以及二进制日志和“server-id”
以上是三台机器安装mysql,一定记得“server-id”不能相同。
Mysql5.5以后新增了半同步复制功能。在使用replication时,主服务器把要提交的事物至少传给了一个备库。增加了主库和从库之间事物的一致性。MHA配合半同步复制效果更佳。虽然启用半同步复制会降低一些性能。但为保持整个系统的正常运行还是值得的。
开启半同步复制:
主库:
[root@cluster1 mysql]# cp /usr/local/mysql/lib/plugin/*.so /usr/local/mysql/lib/mysql/plugin/
不拷贝的话默认找不到模块文件。
mysql> install plugin rpl_semi_sync_master soname 'semisync_master.so';
mysql> set global rpl_semi_sync_master_enabled=1;
mysql> set global rpl_semi_sync_master_timeout=1000;
可以show一下验证是否打开了semisync功能。
mysql> show global status like 'rpl%';
为了让mysql在重启时自动加载该功能,在/etc/my.cnf中加入:
rpl_semi_sync_master_enabled=1
rpl_semi_sync_master_timeout=1000
1000为1000ms的超时时间。
备选主库(从库):
mysql> install plugin rpl_semi_sync_master soname 'semisync_master.so';
mysql> set global rpl_semi_sync_master_enabled=1;
mysql> set global rpl_semi_sync_master_timeout=1000;
mysql> install plugin rpl_semi_sync_slave soname 'semisync_slave.so';
mysql> set global rpl_semi_sync_slave_enabled=1;
在/etc/my.cnf中加入:
rpl_semi_sync_master_enabled=1
rpl_semi_sync_master_timeout=1000
rpl_semi_sync_slave_enabled=1
从库:
mysql> install plugin rpl_semi_sync_slave soname 'semisync_slave.so';
mysql> set global rpl_semi_sync_slave_enabled=1;
在/etc/my.cnf中加入:
rpl_semi_sync_slave_enabled=1
在备用节点和从节点的/etc/my.cnf中加入选项:
read_only=1
relay_log_purge=0
|
评论暂时关闭