概述
数据库MySQL1、MySQL2分别在主机A、主机B上,MySQL1新建库D,则MySQL2也新建库D,MySQL1原有库A、B、C,MySQL2也原有库A、B、C。总之MySQL1和MySQL2一样;
环境
2台Linux虚拟主机,版本均为centos6.5,对应2个不同的ip地址,这2台虚拟主机均安装有mysql5.6;
开始构建主从复制
步骤1:
切换用户,service iptables stop以暂时关闭防火墙,chkconfig --level 2345 iptables off以永久关防火墙,ifconfig以看ip地址;
使2个操作系统下的mysql里没有任何数据,自己不创建任何库,自带的库不用管;
令主机A为主数据库服务器,主机B为从数据库服务器(谁为主无所谓);
一般Linux下mysql配置文件在/etc/my.cnf;find / -name my.cnf以查找所有名为my.cnf的文件;vim /etc/my.cnf以打开mysql配置文件,在配置文件中加log-bin=mysql-bin,表示已开启二进制日志,必须开启主服务器二进制日志,因为数据的同步实质为其他的mysql数据库服务器将这个数据变更的二进制日志在本机上再执行一遍,配置文件中保证每台主机的server-id不重复;
步骤2(在master数据库服务器中):
进入mysql;
GRANT REPLICATION SLAVE ON *.* TO '主库用户名'@'从库ip地址' IDENTIFIED BY '主库密码'; //创建一个slave主机中可以登录的mysql用户
FLUSH PRIVILEGES;
退出mysql;
service mysql stop;
service mysql start;
步骤3(在master数据库服务器中):
进入mysql;
show master status;
停止服务再启动服务;
步骤4(在slave数据库服务器中):
进入mysql;
CHANGE MASTER TO MASTER_HOST='主库ip地址',MASTER_USER='主库用户名',MASTER_PASSWORD='主库密码',
MASTER_LOG_FILE='mysql-bin.000011',MASTER_LOG_POS=417;
(在CHANGE MASTER TO之前stop slave;reset slave;)
START SLAVE;
SHOW SLAVE STATUSG
(养成习惯:改配置文件先停掉服务)
测试主从复制
进入主的mysql,show databases,进入从的mysql,show databases;
进入主MySQL,建库,新库名test,再进入从MySQL,看有没有这一新库test;
关机后,做步骤4,重启slave数据库服务器以重新开启主从复制;