我亲自按照网上要求验证了一次,确认可以。步骤如下:
一、主服务器 172.27.206.6
1.1、创建一个复制用户,具有replication slave 权限。
grant replication slave on *.* to 'repl'@'172.27.206.7' identified by 'repl';
flush privileges;
1.2、编辑my.cnf文件
vi /etc/my.cnf
添加
server-id=107
并开启log-bin二进制日志文件(Mysql需要有/var/lib/mysql/目录的读写权限【可通过chown -R mysql:mysql /var/lib/mysql命令进行更改】)
log-bin=/var/lib/mysql/mysql-bin
其他扩展配置项:
binlog-do-db=mysql1 #需要备份的数据库名,如果备份多个数据库,重复设置这个选项 即可
binlog-ignore-db=mysql2 #不需要备份的数据库名,如果备份多个数据库,重复设置这 个选项即可
log-slave-updates=1 #这个参数一定要加上,否则不会给更新的记录些到二进制文件 里
slave-skip-errors=1 #是跳过错误,继续执行复制操作(可选)
1.3、重启mysql数据库
service mysqld restart
#指定绝对路径,否者会出现mysql运行show master status;时无法查看日志情况
mysql> show master status;
Empty set (0.00 sec)
mysql> show binary logs;
1.4、设置读锁
flush tables with read lock;
1.5、得到binlog日志文件名和偏移量(此处记住File名称和Position值,后面slave服务器配置时需要用到)
mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 | 106 | member | mysql |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
1.6、备份要同步的数据库
mysqldump member > member.sql
1.7、解锁
mysql>unlock tables;
二、从服务器(172.27.206.7)
2.1、编辑my.cnf文件
vi /etc/my.cnf
添加
server-id=109
2.2、重启从数据库
service mysqld restart
2.3、对从数据库进行相应设置
此处要注意logfile的名称和position的值,其余host、user和password为主数据库设置的账号和密码
stop slave;
change master to master_host='172.27.206.6',master_user='repl',master_password='repl', master_log_file='mysql-bin.000001',master_log_pos=106;
start slave;
show slave status;
在这里主要是看:
Slave_IO_Running=Yes
Slave_SQL_Running=Yes
如果出现Slave_IO_Running: No或Slave_SQL_Running: NO,需要重做2.3、对从数据库进行相应设置
三、测试:
上述项配置完以后可查看master和slave上线程的状态。在master上,你可以看到slave的I/O线程创建的连接:在master上输入show processlist\G;
show processlist\G;
mysql> show processlist\G;
*************************** 1. row ***************************
Id: 2
User: root
Host: localhost
db: NULL
Command: Sleep
Time: 765
State:
Info: NULL
*************************** 2. row ***************************
Id: 5
User: repl
Host: 172.27.206.7:55546
db: NULL
Command: Binlog Dump
Time: 132
3.1、在主数据库:172.27.206.6上添加新数据
insert into `menber` (`name`, `id`) values('李八','4');
insert into `menber` (`name`, `id`) values('苍井空','5');
此时数据已经成功复制到slave从数据库172.27.206.7上。
注:但是从数据库上不要做任何操作,否则会影响后续的同步操作。