mysql 双主热备

最近在搞mysql的双主热备和宕机自切换的应用,把安装过程遇到的问题总结一下,以备后用。

参考资料

mysql双机热备的实现 : https://blog.csdn.net/qq394829044/article/details/53203645

keepalived :http://www.cnblogs.com/guantou1992/p/9729465.html

windows+ubuntu双系统安装:https://www.linuxidc.com/Linux/2016-04/130520.htm

环境

系统:Ubuntu -16.04.3  

A服务器:192.168.1.201

B服务器:192.168.1.201

安装Mysql

apt-get install mysql-server

这样会自动安装最新版本的,我的是5.7.24。安装过程中会让输入root密码,须注意。

Mysql的用户配置

安装之后,root用户登录Mysql。

mysql -u root -p

回车输入密码。添加一个同步的用户user,密码123456,可以远程和本地登录,该帐户必须授予REPLICATION SLAVE权限,这里我们直接设置拥有所有权限。

grant all privileges on *.* to user@"%" identified by "123456";

@ 后面是访问mysql的客户端IP地址(或是 主机名) % 代表任意的客户端,localhost 代表只能本地登录。

flush privileges;

刷新刚才的内容。新建一个数据库test,test下有一个userinfo表,用于后面热备份的设置。

Mysql双主热备配置

我们这里的双主的意思就是A和B互为主从服务器,既是主服务器也是从服务器。编辑mysql.cnf  路径 /etc/mysql/mysql.conf.d/mysqld.cnf。

A服务器:

[mysqld]
server-id		= 1
log_bin			= /var/log/mysql/mysql-bin.log
expire_logs_days	= 10
max_binlog_size   = 100M
binlog_do_db		= test 
binlog_ignore_db	= include_database_name

log-slave-updates
sync_binlog = 1
auto_increment_offset = 1
auto_increment_increment = 2
replicate-do-db = test
replicate-ignore-db = mysql,information_schema

B服务器:

主要是把server-id 设置 2 。

[mysqld]
server-id		= 2
log_bin			= /var/log/mysql/mysql-bin
expire_logs_days	= 10
max_binlog_size   = 100M
binlog_do_db		= test 
binlog_ignore_db	= include_database_name

log-slave-updates
sync_binlog = 1
auto_increment_offset = 1
auto_increment_increment = 2
replicate-do-db = test
replicate-ignore-db = mysql,information_schema

修改完配置文件后,保存后,分别重启一下两台服务器的mysql服务,如果成功则没问题。

/etc/init.d/mysql restart

分别查A服务器和B服务器作为主服务器的状态

登录数据库,执行命令查看:

show master status\G;

记下A和B这两台服务器的File和Position的参数,slave连接主服务器时需要设置。

接下来,分别在A和B上用change master to 命令指定同步的主服务器。

A服务器:


mysql>change master to

>master_host='192.168.1.202',master_user='user',master_password='123456',

> master_log_file='mysql-bin.000016',master_log_pos=515;

注:master_log_file对应B服务器master状态中的File,master_log_pos对应Position。

若操作不成功的话,可执行stop slave 停止slave线程 reset slave清除设置后再重新设置。change master to 执行完毕后,执行开启slave线程。

start slave;

查看slave的状态。

show slave status\G;

查看下面两项值均为Yes,即表示设置从服务器成功。

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

同理B服务器:


mysql>change master to

>master_host='192.168.1.201',master_user='user',master_password='123456',

> master_log_file='mysql-bin.0000xx',master_log_pos=xxx;

查看B的slave的状态,是否设置成功。成功后,可分别在A和B数据库上做一些操作,看另一台是否会同步。

©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页