最近在做mysql数据库的双向主从,了解到keepalived能够自动判断并切换到可用数据库,自己试了一下,整理出文档来。..
最近在做mysql数据库的双向主从,了解到keepalived能够自动判断并切换到可用数据库,自己试了一下,整理出文档来。
先声明一下环境
iptables开启3306端口或者关掉,关闭selinux
mysql-01:192.168.204.138
mysql-02:192.168.204.139
vip:192.168.204.200 #web服务器连接的ip,自己可以使用工具连接试一下。
mysql的安装过程就略过了,根据个人情况自己安装即可。
1.修改数据库的配置文件/etc/my.cnf:
1.1修改mysql-01的数据库文件,在[mysql]下添加如下内容
server_id = 1log_bin = mysql-bin 1.2修改mysql-02的数据库文件,在[mysql]下添加如下内容
server_id = 2log_bin = mysql-bin2.搭建单向主从
2.1在mysql-01上
2.1.1操作授权
mysql -u root -p #输入密码mysql> grant replication slave on *.* to 'slave'@'192.168.204.139' identified by '123456';mysql> flush privileges; 2.1.2数据传递给mysql-02
mysql -u root -p #输入密码flush tables with read lock; #锁表操作mysql> show master status;+------------------+----------+--------------+------------------+-------------------+| file | position | binlog_do_db | binlog_ignore_db | executed_gtid_set |+------------------+----------+--------------+------------------+-------------------+| mysql-bin.000012 | 120 | | | |+------------------+----------+--------------+------------------+-------------------+1 row in set (0.00 sec)mysqldump -u root -p --all-databases > mysqldump.sqlmysql -u root -pmysql> unlock tables;mysql> quit scp myqsldump.sql 192.168.204.139:/root/ 2.2在mysql-02上操作
2.2.1恢复数据库数据
mysql -u root -p 2.2.2建立主从同步 mysql -u root -pmysql> change master to master_host='192.168.204.138',master_user='slave',master_password='123456',master_log_file='mysql-bin.000012',master_log_pos=120,master_port=3306;start slave; 检查是否成功
show slave status\g;slave_io_running: yesslave_sql_running: yes 都为yes表示同步成功。
注:master_port=3306,默认时不需要加,但是修改过端口的则需要该选项
3.搭建互为主从
3.1在mysql-01上操作
3.1.1用户授权
mysql -u root -p123456mysql> grant replication slave on *.* to 'slave'@'192.168.204.138' identified by '123456'; //建立权限mysql> flush privileges; 注:因为做的是所有库的主从,,所以在mysql-01上的操作会同步到mysql-02上
3.2在mysql-02上的操作
mysql -u root -pmysql> show master status\g;+------------------+----------+--------------+------------------+-------------------+| file | position | binlog_do_db | binlog_ignore_db | executed_gtid_set |+------------------+----------+--------------+------------------+-------------------+| mysql-bin.000009 | 120 | | | |+------------------+----------+--------------+------------------+-------------------+1 row in set (0.00 sec)