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

原文地址:https://www.cnblogs.com/langke93/p/2580464.html