master端192.168.200.77

1.在/etc/my.cnf里添加

  [mysqld]

  log-bin=mysql-bin

  server-id=1

2.查看设置是否生效

  一、在data目录是否有mysql-bin.000001文件和mysql-bin.index文件

  二、mysql> show variables like '%log_bin%';

     

+---------------------------------+---------------------------------------------+

| Variable_name                   | Value                                       |

+---------------------------------+---------------------------------------------+

| log_bin                         | ON                                          |

| log_bin_basename                | /application/mysql/data/mysql_log_bin       |

| log_bin_index                   | /application/mysql/data/mysql_log_bin.index |

| log_bin_trust_function_creators | OFF                                         |

| log_bin_use_v1_row_events       | OFF                                         |

| sql_log_bin                     | ON                                          |

+---------------------------------+---------------------------------------------+

6 rows in set (0.02 sec)



3.添加mysql用户,给slave连接使用

 mysql> grant replication slave on *.* to 'rep'@'%' identified  by 'oldboy123';

 mysql> flush privileges;


4.备份主库数据库

  1.flush table with read lock;

  2.另开一个窗口

    mysqldump -uroot -poldboy -A -B --master-data=2 >/tmp/mysql_all_B.sql

    可以查看bin-log信息

    mysql>show master status;

    mysql>show master logs;

  3.unlock tables;



#########################################################################

salve端192.168.200.88

1.修改/etc/my.cnf里添加

  [mysqld]

  server-id=2

2.mysql -uroot -poldboy </tmp/mysql_all_B.sql

3.change master to

master_host='192.168.200.77',

master_port=3306,

master_user='rep',

master_password='oldboy123',

master_log_file='mysql_log_bin.000035',

master_log_pos=408;



  查看cat /application/mysql/data/master.info

4.start slave;

  show slave status\G;

   Slave_IO_Running:YES

   Slave_SQL_Running:YES

 有2个YES就说明成功了



在master端插入记录,再到slave端看有没有同步过来



备注:

--master-data=1 适用于从库还原,有change master语句,在slave端使用change master

                时可以不用加上master_log_file,master_log_pos语句

--master-data=2 change master语句被注释了



在slave端设置read-only的注意事项(读写分离)

1.在master端添加用户时,权限应符合最小权限,不应该添加ALL或REPLICATION SLAVE

一般只给select,insert,update,delete权限,记得要flush privileges。

2.在slave端/etc/my.cnf的[mysqld]里添加read-only,后必须重启mysql。



mysql主从同步配置步骤

1.准备两台数据库环境,或者单台多实例环境,并能正常启动和登录。

2.配置my.cnf文件,主库配置log-bin和server-id参数,从库配置server-id,

不能和主库和其它从库一样,一般不开启从库log-bin功能。注意:配置参数

后要重启才能生效。

3.登录主库增加用于从库连接主库同步的账户例如:rep,并授权replication slave

同步的权限。

4.登录主库,整库锁表flush table with read lock(窗口关闭后即失效,超时参数到了也失效),

然后show master status查看binlog的位置状态。

5.新开窗口,linux命令行备份或导出原有的数据库数据,并拷贝到从库所在服务器目录。

6.解锁主库unlock tables。

7.把主库导出的数据库恢复到从库服务器。

8.根据主库的show master status查看binlog的位置状态,在从库执行change master to语句。

9.从库开启同步开关,start slave.

10.从库show slave status\G 检查同步状态,并在主库进行更新测试。