mysql的双机热备
来源:互联网 发布:qq免费刷会员软件 编辑:程序博客网 时间:2024/06/11 00:33
双机热备特指基于高可用系统中的两台服务器的热备(或高可用),因两机高可用在国内使用较多,故得名双机热备,双机高可用按工作中的切换方式分为:主-备方式(Active-Standby方式)和双主机方式(Active-Active方式),主-备方式即指的是一台服务器处于某种业务的激活状态(即Active状态),另一台服务器处于该业务的备用状态(即Standby状态)。而双主机方式即指两种不同业务分别在两台服务器上互为主备状态(即Active-Standby和Standby-Active状态)。
简单通俗的理解就是:在mysql主从复制的基础上实现,也就是mysql的互为主从。
首先实现mysql的主从复制:
安装其他的我就不多说了,准备两台mysql服务器,docker搭建也是可以的,我就是给予docker实现的
1.修改主服务器master:
- #vi /etc/my.cnf
- [mysqld]
- log-bin=mysql-bin //[必须]启用二进制日志
- server-id=222 //[必须]服务器唯一ID,默认是1,一般取IP最后一段
2.修改从服务器slave:- #vi /etc/my.cnf
- [mysqld]
- log-bin=mysql-bin //[不是必须]启用二进制日志
- server-id=226 //[必须]服务器唯一ID,默认是1,一般取IP最后一段
3、重启两台服务器的mysql service mysql restart
docker所创建的容器退出重新启动即可
4.在主(matser)服务器上建立帐户并授权slave:
- mysql -uroot -pmttang
-
-
- mysql>GRANT REPLICATION SLAVE ON *.* to 'mysync'@'%' identified by 'q123456';
- //一般不用root帐号,“%”表示所有客户端可以链接,也可以换成固定的ip地址
- //mysync 创建的账户
- //q123456 创建的密码
5.登录主服务器的mysql,查询master的状态- mysql>show master status;
- +------------------+----------+--------------+------------------+
- | File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
- +------------------+----------+--------------+------------------+
- | mysql-bin.000004 | 308 | | |
- +------------------+----------+--------------+------------------+
- 1 row in set (0.00 sec)
注:执行完此步骤后不要再操作主服务器MYSQL,防止主服务器状态值变化6.配置从服务器Slave:
- mysql>change master to master_host='192.168.145.222',master_user='mysync',master_password='q123456',master_log_file='mysql-bin.000004',master_log_pos=308;
- //注意不要断开,308数字前后无单引号。
- //matser_host matser主机ip地址
- //master_user 刚才创建的远程用户
- //master_password 创建用户的密码
- //mysql_log_file 刚才在master里面show master status;查出的结果里面保持一致
- //mysql_log_pos 同上 切记保持一致
7.重启slave复制功能:
- Mysql>start slave; //启动从服务器复制功能
8、检查从服务器复制功能状态:- mysql> show slave status\G
-
- *************************** 1. row ***************************
-
- Slave_IO_State: Waiting for master to send event
- Master_Host: 192.168.2.222 //主服务器地址
- Master_User: mysync //授权帐户名,尽量避免使用root
- Master_Port: 3306 //数据库端口,部分版本没有此行
- Connect_Retry: 60
- Master_Log_File: mysql-bin.000004
- Read_Master_Log_Pos: 600 //#同步读取二进制日志的位置,大于等于Exec_Master_Log_Pos
- Relay_Log_File: ddte-relay-bin.000003
- Relay_Log_Pos: 251
- Relay_Master_Log_File: mysql-bin.000004
- Slave_IO_Running: Yes //此状态必须YES
- Slave_SQL_Running: Yes //此状态必须YES
- ......
注:Slave_IO及Slave_SQL进程必须正常运行,即YES状态,否则都是错误的状态(如:其中一个NO均属错误)。以上操作过程,主从服务器配置完成。9、主从服务器测试:
主服务器Mysql,建立数据库,并在这个库中建表插入一条数据:
- mysql> create database hi_db;
- Query OK, 1 row affected (0.00 sec)
-
- mysql> use hi_db;
- Database changed
-
- mysql> create table hi_tb(id int(3),name char(10));
- Query OK, 0 rows affected (0.00 sec)
-
- mysql> insert into hi_tb values(001,'bobu');
- Query OK, 1 row affected (0.00 sec)
-
- mysql> show databases;
- +--------------------+
- | Database |
- +--------------------+
- | information_schema |
- | hi_db |
- | mysql |
- | test |
- +--------------------+
- 4 rows in set (0.00 sec)
从服务器Mysql查询:- mysql> show databases;
-
- +--------------------+
- | Database |
- +--------------------+
- | information_schema |
- | hi_db | //I'M here,大家看到了吧
- | mysql |
- | test |
-
- +--------------------+
- 4 rows in set (0.00 sec)
-
- mysql> use hi_db
- Database changed
- mysql> select * from hi_tb; //查看主服务器上新增的具体数据
- +------+------+
- | id | name |
- +------+------+
- | 1 | bobu |
- +------+------+
- 1 row in set (0.00 sec)
如果说你还想配置双机热备的话就接着往下看,只需要主从复制已经成功了:
其实步骤挺简单,我就给大家简单说一下,
互为主从就是在主从复制基础上实现的,
如果想要继续操作的话就是从上面第四条开始执行的,
但是需要把slave 和master 相互交换一下即可
主从复制通过日志文件来完成,那我们在做一次类似的操作即可