mysql主从同步配置

主服务器ip192.168.0.101

从服务器ip192.168.0.105

  1. 主服务器my.ini配置(我的电脑上的目录为D:\soft\MySQL\MySQL Server 5.6\data\my.ini

 [mysqld]

       log-bin=mysql-bin   //[必须]启用二进制日志

       server-id=101      //[必须]服务器唯一ID,默认是1,一般取IP最后一段

  1. 从服务器my.ini配置(我的电脑上的目录为D:\soft\MySQL\MySQL Server 5.6\data\my.ini

 [mysqld]

       log-bin=mysql-bin   //[必须]启用二进制日志

       server-id=105      //[必须]服务器唯一ID,默认是1,一般取IP最后一段

  1. 重启两台服务器上的mysql服务

 

  1. 在主服务器上建立帐户并授权slave:

先以root的身份登录mysql

mysql -uroot -proot

创建用于同步的mysql账号并授权只允许从服务器登录同步

GRANT REPLICATION SLAVE ON *.* to 'mysync'@'192.168.0.105' identified by 'q123456';

登录主服务器的mysql,查询master的状态

show master status;

注:执行完此步骤后不要再操作主服务器MYSQL,防止主服务器状态值变化

 

  1. 5.     配置从服务器Slave

先以root的身份登录mysql

mysql -uroot –proot

配置对应主服务器的信息(ip,用户名,密码,master_log_filemaster_log_pos等参数)

change master to master_host='192.168.0.101',master_user='mysync',master_password='q123456', master_log_file='mysql-bin.000001',master_log_pos=332;

  //注意不要断开,332数字前后无单引号。

  master_host:主服务器的ip

  master_user:主服务器上创建的用于两步的用户的用户名

  master_password:主服务器上创建的用于两步的用户的密码

  master_log_filemaster_log_pos:前面主服务器使用show master status查看到的值

启动从服务器复制功能

Mysql>start slave;

 

  1. 6.     检查从服务器复制功能状态:

show slave status\G

注:Slave_IOSlave_SQL进程必须正常运行,即YES状态,否则都是错误的状态(如:其中一个NO均属错误)

 

以上操作过程,主从服务器配置完成。

 

  1. 7.     主从服务器测试:

 

主服务器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)

登录从服务器可查看到对应的数据库和表等都已经同步了。

 

使用以上过程进行同步后,虽然之后创建的数据库都可同步,但在配置同步之前的数据库是不能同步的,比如我的主机上有一个jeecg_gjh数据库是在同步之前已经创建的,同步后这个库是不会自动同步的从机上的,如果要同步需要手动执行以下操作:

  1. 1.       在主机上先锁定写入操作

mysql> FLUSH TABLES WITH READ LOCK;
Query OK, 0 rows affected (0.00 sec)

mysql> SHOW MASTER STATUS;

记录下最新的position的值(后面从机上操作时需要用到),比如这边得到的值是3308

  1. 2.    另开一个窗口在主机上导出jeecg这个库

mysqldump -u jeecg -pjeecg --opt -R jeecg_gjh > d:/temp/jeecg_gjh20150904.sql
3.    把导出的sql拷贝到从机上
4.    在主机上创建同样的用户名,密码,库并导入刚才从主机上导出的数据

CREATE DATABASE `jeecg_gjh` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

grant all privileges on jeecg_gjh.* to jeecg@localhost identified by 'jeecg';

use jeecg_gjh;

source d:/temp/jeecg_gjh20150904.sql

  1. 5.  重启从机

STOP SLAVE;
reset slave;
6.    重新指定主机
change master to master_host='192.168.0.101',master_user='mysync',master_password='q123456', master_log_file='mysql-bin.000001',master_log_pos=3308;

注意这边的master_log_pos值为刚才在主机上得到的值

  1. 7.       再次重启从机

STOP SLAVE;
reset slave;

  1. 8.       在从机上执行以下命令

show slave status\G

如果Slave_IOSlave_SQL进程必须正常运行,即YES状态则表明同步正常了。


你可能感兴趣的:(MySQL主从同步)