1.服务器准备

  • 主服务器:192.168.100.161
  • 从服务器:192.168.100.162

2. 主服务器Master配置

2.1 创建同步用户

进入mysql操作界面,在主服务器上为从服务器建立一个连接帐户,该帐户必须授予REPLICATION SLAVE权限。
操作指令如下:

grant replication slave on *.* to 'replicate'@'192.168.100.162' identified by '密码';

密码按需求设置。

flush privileges;

创建好同步连接帐户后,我们可以通过在从服务器(Slave)上用replicat帐户对主服务器(Master)数据库进行访问下,看下是否能连接成功。
在从服务器(Slave)上输入如下指令:

mysql -h192.168.100.161 -ureplicate -p密码

登录成功,说明可以对这两台服务器进行双机热备进行操作。

2.2 修改mysql配置文件

如果上面的准备工作做好,那边我们就可以进行对mysql配置文件进行修改了,首先找到mysql配置所有在目录,一般在安装好mysql服务后,都会将配置文件复制一一份出来放到/ect目录下面,并且配置文件命名为:my.cnf。即配置文件准确目录为/etc/my.cnf
找到配置文件my.cnf打开后,在[mysqld]下修改即可:

[mysqld]
server-id = 1        //唯一id
log-bin=mysql-bin              //其中这两行是本来就有的,可以不用动,添加下面两行即可.指定日志文件
binlog-do-db = sqhgy_prod     //记录日志的数据库
binlog-ignore-db = mysql    //不记录日志的数据库
2.3 重启mysql服务

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

image

2.4 查看主服务器状态

进入mysql服务后,可通过指令查看Master状态,输入如下指令:

image

看里面的参数,特别前面两个File和Position,在从服务器(Slave)配置主从关系会有用到!

注:这里使用了锁表,目的是为了产生环境中不让进新的数据,好让从服务器定位同步位置,初次同步完成后,记得解锁。

image

3 从服务器Slave配置

3.1修改配置文件

因为这里面是以主-从方式实现mysql双机热备的,所以在从服务器就不用在建立同步帐户了,直接打开配置文件my.cnf进行修改即可,道理还是同修改主服务器上的一样,只不过需要修改的参数不一样而已。如下:

[mysqld]
server-id = 2
log-bin=mysql-bin
replicate-do-db = sqhgy_prod
replicate-ignore-db = mysql,information_schema,performance_schema
3.2重启mysql服务

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

image

3.3用change mster 语句指定同步位置

这步是最关键的一步了,在进入mysql操作界面后,输入如下指令:

mysql>stop slave;          //先停步slave服务线程,这个是很重要的,如果不这样做会造成以下操作不成功。
mysql>change master to
>master_host='192.168.100.161',master_user='replicate',master_password='sqhgy123',
> master_log_file='mysql-bin.000016',master_log_pos=107;

注:master_log_file, master_log_pos由主服务器(Master)查出的值中状态确定。也就是刚刚叫注意的。master_log_file对应File, master_log_pos对应Position。Mysql 5.x以上版本已经不支持在配置文件中指定主服务器相关选项。
遇到的问题,如果按上面步骤之后还出现如下情况:

image
则要重新设置slave。指令如下

mysql>stop slave;
mysql>reset slave;
# 之后停止slave线程重新开始。成功后,则可以开启slave线程了。
mysql>start slave;
3.4查看从服务器(Slave)状态

用如下指令进行查看

mysql> show slave status\G;

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

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

image

注意:双机热备前,需要保证2个数据库数据一致。操作前,需要做一次数据同步。

4.如果主从备份出现故障(Slave_SQL_Running:No)

4.1首先停止从数据库
mysql -u root -p
stop slave ;
4.2 查看主数据库状态 并记录file 和 Position
show master status;
+----------------------+----------+--------------+------------------+
| File                 | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+----------------------+----------+--------------+------------------+
| localhost-bin.000094 | 33622483 |              |                  | 
+----------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
4.3 到从数据库上执行手动同步
change master to 
> master_host='master_ip',
> master_user='user', 
> master_password='pwd', 
> master_port=3306, 
> master_log_file='localhost-bin.000094', 
> master_log_pos=33622483 ;
4.4 启动从数据库
start slave ;