使用场景:mysql的实时备份或者读写分离。
环境:
vmware虚拟机,并且安装了linux系统(我用的是centos7),linux上安装了mysql
第一台mysql安装好了之后,将当前linux系统克隆一份。
我的两个linux系统的IP地址分别是128,129;
128为master,129为slave;
两台服务器上的mysql配置当前完全一样。
克隆过来之后,需要把另一个mysql的(/ect/my.cnf)server_id改掉。
这里我把128上的mysql的server_id改成128;
129机子上的mysql的server_id改成129;
修改好配置文件后,启动两台机子上的mysql
启动:
/etc/init.d/mysqld start
重启:
/etc/init.d/mysqld restart
锁定master
flush tables with read lock;
查看master状态
show master status
记住这个信息,后面配置slave信息的时候,会用到;
配置slave
登录129服务器的mysql
mysql -uroot -pgys
关闭slave
给slave配置master
这里的master_log_file='guoyansi128.000004',master_log_pos=120;就是前面maste的status
开启slave
回到master上 释放被锁的表:
mysql -uroot -pgys -e "unlock tables"
查看slave状态
只要 slave_io _running和slave_sql_running都是yes表示 主备关系已经建好了;
现在在master上建表,并且添加数据,查看slave上的数据库是否会跟着变;
这种主从配置看上去非常简单;但是这个机制非常脆弱,一旦我们不小心在slave上写了数据,那么主从复制也就被破坏了。
另外重启master,务必先关闭slave,即在slave上执行slave stop命令,然后重启master的mysql服务,否则主从复制就有可能会被中断。
当然重启了master后,我们还需要执行start slave命令来开启主从复制。