grant all on *.* to 'root'@'%' identifiedby '7ujm8ik,';
FLUSH PRIVILEGES;
show master status;
登陆主服务
1 、主服务器授权
MySql> grant replication slave on *.* to'rekfan.com'@'192.168.2.3' identified by 'password';
Rekfan.com--- MySql 用户名
192.168.2.3--- 从服务器 ip
Password--- MySql 密码
2 、数据复制
建立好访问许可之后,接下来是从主服务器向从服务器复制数据。
在 A 服务器上有个 rekfan_db 数据库,我们现在假设以这个数据库来作同步,将 A 的
rekfan_db 数据库复制到 B 服务器上,可以使用 MySqldump 工具
3 、配置主服务器( A 服务器)
[MySqld]
# 主机标识 , 整数值 ( 唯一 ) ,并不能与从服务器的值相同
server-id=1
# 这一条比较重要 否则不成功 slave 也需要
replicate-same-server-id
# 日志文件以 mysql-bin 为前缀
log-bin= mysql-bin
# 主机,读写都可以
read-only=0
# 不需要备份的数据库,多个写多行 ( 可选属性 )
binlog-ignore-db=mysql,information_schema
# 需要备份数据,多个写多行 ( 可选属性 )
binlog-do-db=rekfan_db
这几个参数一定要放在 [Mysqld] 结点下 , 都是小写 , 如果大写 , 服务会启动不了
配置好之后重启 MySql 服务器,在重启之后清空二进制日志( reset master 命令)
运行 show variables like '%server%'; 可以看到配置成功
4 、配置从服务器( B 服务器)
[mysqld]
server-id=2# 和主服务的不能重复
replicate-same-server-id# 必须有
replicate-do-db= rekfan_db
启动从服务器 Mysql 数据库 , 执行如下命令 :
MySql>slave stop;
showmaster status;
登陆 slave 库执行
MySql>change master to master_host='192.168.2.2', master_user='rekfan.com',master_password='password', master_log_file='mysql-bin.000001',master_log_pos=0;
MySql>slave start;
MySql>show slave status \G;
在初次启动以后,从服务器将检查这个 master.info 文件,以得到相关信息。如果想
修改复制选项,删除 master.info 并重启 MySql 服务,在启动过程中使用选项配置文件
中的新选项进行重新创建了 master.info 文件。
5 、管理服务器过程
5.1 、管理主服务器
显示数据库服务器上有关线程的信息,命令如下:
mysql>show processlist;
显示二进制日志信息,命令如下:
mysql>show binlog events;
显示主服务器二进制其他信息,命令如下:
mysql>show master status;
5.2 、管理副服务器
在上面步骤 4 中配置好副服务器后需要重启 MySql 服务,进入 MySql 命令行用于开始复制,执行如下命令:
mysql>start slave;
查看服务器的状态信息 , 命令如下:
mysql>show slave status \G;
其中 Slave_IO_Running 对应的值为 YES ,
Slave_SQL_Running 对应的值为 YES
6 、查看数据同步情况
主服务器( A 服务器)的表中添加数据,看看副服务器( B 服务器)有没有同步数据
如果看到 B 服务器也有数据了,即实现了数据的同步
而是要 change master to 命令则可以通过命令设置,但这个命令不会影响 my.conf 文件,重启 mysql 后,设置就无效了。
用到的命令:
showmaster status \G;
showslave status \G;
showvariables like '%server%'
start/stopslave