MySQL主从配置

在开始配置之前,我们先说说为什么要用数据库主从复制吧。

  1. 分散负载:用主从复制最大的好处之一就是由主库执行所有插入操作,由从库承担起大部分的查询操作。简单地通过主从就能极大地提速你的应用。
  2. 用从库备份数据:这个优点常常被遗忘。使用从库备份不会影响你的网站工作,特别是当数据量大到G级别的时候,由备份引起的锁表引导致网站延迟响应。更严重地可能会导致网站瞬间瘫痪。如果在从库上做这些就无关紧要了,你甚至可以停掉某个从库,并且暴力的复制var目录。

假设你有两台数据库服务器,计划如下部署:

Master server ip: 10.0.0.1 Slave server ip: 10.0.0.2 Slave username: slaver Slave pw: 123456 Your data directory is: usr/local/mysql/var

主库配置文件my.cnf [mysqld]节下面加上:

server-id = 1 relay-log = /usr/local/mysql/var/mysql-relay-bin relay-log-index = /usr/local/mysql/var/mysql-relay-bin.index log-error = /usr/local/mysql/var/mysql.err master-info-file = /usr/local/mysql/var/mysql-master.info relay-log-info-file = /usr/local/mysql/var/mysql-relay-log.info datadir = /usr/local/mysql/var log-bin = /usr/local/mysql/var/mysql-bin

从库配置文件my.cnf [mysqld]节下面加上

server-id = 2 relay-log = /usr/local/mysql/var/mysql-relay-bin relay-log-index = /usr/local/mysql/var/mysql-relay-bin.index log-error = /usr/local/mysql/var/mysql.err master-info-file = /usr/local/mysql/var/mysql-master.info relay-log-info-file = /usr/local/mysql/var/mysql-relay-log.info datadir = /usr/local/mysql/var

在主库上创建用户:

mysql> grant replication slave on . to 'slaver'@'10.0.0.2' identified by '123456';

值得注意的是,grant replication slave是全局操作,不能对单个库操作。

使用mysqldump工具,导出主库数据,配好之前先手动同步主从库的数据:

mysqldump -u root --all-databases --single-transaction --master-data=1 > masterdump.sql

然后在从库中导入: mysql < masterdump.sql

接下来要告库从库去复制哪个主库,以及连接主库的信息: mysql> CHANGE MASTER TO MASTER\_HOST='10.0.0.1', MASTER\_USER='slaver', MASTER\_PASSWORD='123456';

紧接着开启从库同步: mysql> start slave;

可以通过下命的命令查看同步状态: mysql> show slave status\G

最后执行完成之后,刚添加的用户出现怪异现像,任何帐号都能登陆而且不用密码,最后百思不得其解,大量搜索之后发现“重启MySQL即可”,然后和然后的然后,就可以了。。。