搭建环境:
master 192.168.127.131
slave 192.168.127.128
主从配置的前提:两个数据库的数据需要一模一样所以我们:
在主上面建立一个数据库 在这里我们用mysql备份一下
mysqldump db1 >123.sql (备份)
在主上面建立一个数据库db1需要登录数据库才可以执行这个: (create database db1;)
mysql db1 <123.sql (恢复到db1库)同样的在从上面也执行此操作,保持两个数据库一模一样
主:
更改配置文件/etc/my.cnf[mysqld]
server-id=1log-bin=mysql-bin (可以自定义名字)
binlog-do-db=db1(指定要同步的数据库名字)
登入数据库然后:
grant replication slave on *.* to 'repl'@'192.168.75.128' identified by '123123'; (从的主机ip,并且建立一个同步的用户repl)
flush privileges; 刷新权限
flush tables with read lock; (锁住read)让数据不变)
show master status;(查看之前记得重启mysql服务)
从:配置文件更改: server-id=2不要跟主一样) 重启mysqld服务
登陆从的mysql
slave stop; 停止从的服务
登入从的mysql写上如下命令:
change master to master_host='192.168.75.131', master_port=3306, master_user='repl', master_password='123123', master_log_file='mysql-bin.000018', master_log_pos=106; (粗体的这两个需要跟上面的主一致见图,每次重启一次Mysql服务,mysql-bin.000018这项就会增加1,ip是主的ip地址)
slave startshow slave status\G; 当出现下面这两个,则表示主从同步正确Slave_IO_Running: Yes
Slave_SQL_Running: Yes
然后登陆到主数据库上面 解锁
mysql -e "unlock tables" (不用登陆mysql执行解锁) unlock tables; (需要登陆mysql)
最后可以在主上面做一些操作,来测试了
测试: 主上清空db1库的db表 :use db1;
主上删除表db: drop table db;
主上看db表不存在了 show tables;
然后再去从上查看:show tables;
注意:不用在从上面做任何操作,否则主从会停止
MySQL主从机制比较脆弱,谨慎操作。如果重启master,务必要先把slave停掉,也就是说需要在slave上去执行 slave stop 命令,然后再去重启master的mysql服务,否则很有可能就会中断了。当然重启完后,还需要把slave给开启 slave start.