mysql主从复制实现

先在linux上安装好两台mysql

首先,备份主数据库:

mysqldump --master-data=2 --single-transaction --routines --triggers --events -uroot -p imooc_db > bak_imooc_db.sql

可能会出现这样的错误:

mysqldump: Error: Binlogging on server not active

解决办法:

vi /etc/my.cnf

如果有#log_bin

去掉前面的#号

如果没有就加上log_bin

如下图

重启mysql:service mysqld restart

再执行备份操作:

mysqldump --master-data=2 --single-transaction --routines --triggers --events -uroot -p imooc_db > bak_imooc_db.sql

会看到生成了,bak_imooc_db.sql文件。

将 bak_imooc_db.sql拷贝到10.0.4.181服务器上。(主是:10.0.4.180,从是:10.0.4.181)

scp bak_imooc_db.sql root@10.0.4.181:/root

在10.0.4.181服务器的mysql上创建order_db数据库

mysql> create database order_db charset utf8;

将数据导入order_db中:

[root@node1 ~]# mysql -uroot -p order_db < bak_imooc_db.sql

修改master机器中mysql配置文件my.cnf,该文件在/etc目录下

在[mysqld]配置段添加如下字段

server-id=1

log-bin=log

binlog-do-db=repl //需要同步的数据库,如果没有本行,即表示同步所有的数据库

binlog-ignore-db=mysql //被忽略的数据库

然后登录进入主的mysql,添加用于主从复制的账号。

mysql> create user 'im_repl'@'10.0.4.%' identified by '123456';

对账号授权。

mysql> grant replication slave on *.* to 'im_repl'@'10.0.4.%';

重启master机的mysql服务:service mysqld restart

mysql>show master status;

修改slave机中mysql配置文件

同样在[mysqld]字段下添加如下内容

server-id=2

master-host=192.168.1.222

master-user=repl

master-password=123456

master-port=3306

master-connect-retry=60
# replicate-ignore-db=mysql 忽略的数据库
# master-connect-retry=60 如果从服务器发现主服务器断掉,重新连接的时间差(秒)

#replicate-do-db=repl //同步的数据库(需要备份的数据库名),不写本行 表示 同步所有数据库

然后重启slave机的mysql

在slave机中进入mysql

mysql>start slave;

mysql>show slave statusG;
如果Slave_IO_Running、Slave_SQL_Running状态为Yes则表明设置成功。

关闭slave stop。

在从服务器中建立复制链路。

mysql> change master to master_host='10.0.4.180',master_user='im_repl',master_password='123456',MASTER_LOG_FILE='log.000001', MASTER_LOG_POS=410;

然后执行 slave start;

我们可以通过:

show slave status G

查看从的状态。如下图,还未开启。

到这里就代表配置成功了。

如果还有疑问,可以看一下这个网站:http://www.cnblogs.com/lben/archive/2012/11/19/2777632.html

原文地址:https://www.cnblogs.com/573734817pc/p/10169114.html