MySQL+Keepalive 高可用

说明蓝色=命令名称

      浅绿=命令参数

浅蓝=选项

紫色=目录

系统环境:CentOS  5.7 x86_64

一、所需准备
MySQL-master :192.168.1.71
mysql-slave  :192.168.1.70
mysql版本均为:5.5.21
keepalive 版本:1.2.2
vip:192.168.1.60

注;mysql安装可参考

二、方案介绍

两台mysql互为主从,但只有master写,slave只负责读。主从通过keepalive做成高可用,当master出问题,由slave接替master工作,即读写都在slave操作。当master恢复正常,master自动同步故障时间段数据,接替slave的写工作。

三、双主配置

1、配置文件
master my.cnf 主要参数

log_slave_updates
log-bin = mysql-bin
server-id = 1
binlog-ignore-db=mysql
#auto_increment_increment = 2
#auto_increment_offset = 2

slave my.cnf 主要参数

log_slave_updates
log-bin = mysql-bin
server-id = 2
binlog-ignore-db=mysql
#auto_increment_increment = 2
#auto_increment_offset = 1

注:
log_slave_updates  同步数据时也写入日志,二进制记录id号,互为主从时时不会引起循环。建议开启方便实施日志恢复。 可选
slave-skip-errors  跳过错误,可以通过=指定特定的错误,如:slave-skip-errors=1062  可选
log-bin = mysql-bin 开启二进制日志,必须开启,主从同步主要是通过二进制日志。 必须
sync_binlog=n  设置二进制日志在写入多少此后与硬盘同步,1 为最安全的也是效率最低的,根据实际情况设定 可选
server-id  设置mysql的id号,主从不能相同。 必须
binlog-ignore-db 设置不写入日志的库,建议设置不需要的库,节省流量。如需设置多个库可加多个此参数  可选
binlog-do-db 设置写入二进制日志的库,如设置则只有设置的库才能写入二进制日志。如需设置多个库可加多个此参数。 可选
replicate-ignore-db 设置slave不同步的库,如需设置多个库可加多个此参数。 可选
replicate-do-db 设置slave同步的库,如需设置多个库可加多个此参数。 可选
auto_increment_increment  自增增长值,如:id 设置为 auto_increment,则每次插入数据自增值为2,以1,3,5...或2,4,6...方式增长。 可选
auto_increment_offset 自增初始化便宜值,如果前一个id 为2 则 下一个为3 然后在这个基础上按auto_increment_increment 设置的值进行自增。 可选
master-host = 192.168.1.2 设置master 服务器地址,也可以启动时通过change master to 设置 。 可选
master-user = repl 设置更新用的帐号,也可以启动时通过change master to 设置 。 可选
master-password = 123 设置跟新用的密码,也可以启动时通过change master to 设置 。 可选
master-port = 3306 设置master端口,也可以启动时通过change master to 设置 。 可选

binlog-do-db、binlog-ignore-db、replicate_do_db、replicate_ignore_db 在使用时应注意,若加了以上参数,则在操作数据库是要避免跨库操作(例:update test.table1 set...)
如设置 binlog-do-db=test
use mysql;
update test.table1 set ......
第二句会执行但不会写入二进制日志,即从库不能同步,主从数据库出现差异

如设置 binlog_ignore_db=mysql
use mysql;
update test.table1 set ......
第二句会执行但不会写入二进制日志,即从库不能同步,主从数据库出现差异

如设置 replicate_do_db=test
use mysql;
update test.table1 set ......
第二句将不会被执行,即从库不能同步,主从数据库出现差异

如设置 replicate_ignore_db=mysql
use mysql;
update test.table1 set ......
第二句会被忽略执行,即从库不能同步,主从数据库出现差异

原因是设置binlog-do-db、binlog-ignore-db、replicate_do_db或replicate_ignore_db后,MySQL执行sql前检查的是当前默认数据库,所以跨库更新语句被忽略。

2、安装准备

写好配置文件重启数据库
service mysqld restart

同步数据库
可通过 tcpdump 也可以直接打包拷贝,因本次mysql都是新装设置一样,无需同步,不会同步者建议google一下。


分别在master、slave上添加同步帐号
mysql>grant replication slave on *.* to zsz@'%' identified by 'zzzzzzz';

3、设置主从

查看master二进制日志状态:show master status;

MySQL+Keepalive 高可用

在slave 执行:

mysql>change master to master_host='192.168.1.71',master_user='zsz', master_password='zzzzzzz',master_log_file='mysql-bin.000007',master_log_pos=107;

:master_log_file='mysql-bin.000007',master_log_pos=107 为master status中对应的内容。

mysql> slave start
mysql> show slave status\G;

MySQL+Keepalive 高可用

其中 Slave_IO_Running: Yes,Slave_SQL_Running: Yes 表示设置成功。

测试:
在slave执行:
mysql> show databases;

MySQL+Keepalive 高可用

linux

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/76100523158b40e242ec28a8fc470038.html