mysql主从复制小记
1.。确保主服务器开启log-bin,主从服务器的server_id 取不同的数字。
/etc/my.cnf
[mysqld] log-bin=mysql-bin #启动二进制文件
server-id=1 #服务器ID
sh /etc/init.d/mysql start
2.在主服务器上,设置一个复制账户,并授予REPLICATION SLAVE 权限
GRANT REPLICATION slave ON *.* TO 'rep'@'slave_host' IDENTIFIED BY 'repl_pass';
查询主数据库状态,然后得到主服务器上当前的二进制日志名和偏移量值: mysql> SHOW MASTER STATUS;
在从服务器上操作:
1)、确保/etc/my.cnf中有log-bin=mysql-bin和server-id=1参数,并把server-id=1修改为server-id=2。修改之后如下所示:
[mysqld] log-bin=mysql-bin #启动二进制文件
server-id=2 #服务器ID
2)、重启mysql服务。
/etc/init.d/mysql start
3)、登录mysql,执行如下语句 [root@localhost ~]# mysql -uroot –p123456
mysql> change master to master_host='master_host',master_user='rep',master_password='repl_pass',master_log_file='mysql-bin.000006',master_log_pos=1251455;
4)、启动slave同步。 mysql> start slave;
5)、检查主从同步,如果您看到Slave_IO_Running和Slave_SQL_Running均为Yes,则主从复制连接正常。
mysql> show slave status\G
验证是否成功: 在主数据库上新建一个数据库,查看从数据库是不是也有了这个数据库;新建一张表或者插入一条记录,查看从数据库是否同步更新。
如果原主数据库有数据的情况下,则要把数据导到从库:
1、数据库锁表操作,不让数据再进行写入动作。mysql> FLUSH TABLES WITH READ LOCK;
2、察看主数据库的状态 mysql> show master status; 并记下FILE及Position的值。
3、把主服务器数据文件复制到从服务器,最好先用压缩处理一下。
4、取消主数据库锁定 mysql> UNLOCK TABLES;
5、从服务器的操作和之前一样。记得先stop slave 然后start slave