由于我们生产环境是单库,后面甲方提需求让把数据库做备份,每天增量备份,一周全量备份,全量备份的覆盖周期为一个月。搞了一天算是搞定,其实操作的时间不长,大部分时间都浪费在老数据的导入和导出了。
主库的地址是:61.112.51.83 端口是:13306
从库的地址是:61.112.51.92
同步的数据库名称:piiums
数据库均使用root账号进行操作,密码为:123456
一.导主库的老数据至新库
从库是新的数据库,没有数据,老数据需要先导入到新库,再进行主从,所以要对老库进行锁库,只能查看不能操作数据库,否则在你导数据的时候,老库的数据会有变动,从而和新库的数据有出入。
mysql> flush tables with read lock;
使用mysqldump导出主库的老数据,数据大概有60多g,导出的很快,又把sql文件放到从库的服务器。
./mysqldump -uroot -p123456 piiums > piiums.sql
使用mysql命令导入到从库的空库里,导出的时候其实很快,导入数据大概花了5个小时
./mysql -uroot -p123456 piiums < piiums.sql
二.配置主库
老数据导入完成,现在开始配置主从,在主库的/etc/my.cnf的[mysqld]模块下添加
log-bin=mysql-bin
server-id=1
说明:
1) log-bin=mysql-bin启用Binary Log,会在数据文件夹中生成一系列的滚动文件,类似:mysql-bin.000002
2) server-id=1中的1可以任定义,只要是唯一的就行,为了与其它Master和Slave进行区别;
创建用于复制操作的用户及赋权限
mysql>create user 'repl'@'%' identified by '123456';
mysql>grant replication slave on *.* to 'repl'@'%';
重启mysql服务,查看Master状态,里面的FIle和Position后面从库设置那边会用到
mysql>show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000028 | 29 | | |
+------------------+----------+--------------+------------------+
三.配置从库
在从库的/etc/my.cnf下的[mysqld]模块下增加
[mysqld]
server-id=2
说明:id只要和主库的id不同就可以
重启数据库,登录数据库,执行下面的脚本
mysql>change master to
master_host='62.112.51.83',
master_user='repl',
master_password='123456',
master_port=13306,
master_log_file='mysql-bin.000028',
master_log_pos=29;
启动slave
mysql>start slave;
检查主从同步状态,执行下面的脚本命令,其中Slave_IO_Running 与 Slave_SQL_Running 的值都必须为YES
mysql>show slave status\G;
配置成功后不要忘记将主库的锁打开
mysql>unlock tables;
在主库添加一条数据,相应的从库中业有这条数据,则成功。