首先交代一下环境
服务器两台,系统centos7.4;
mysql版本5.6
主ip:182.61.55.223
从ip:118.25.235.81
进入主库数据库执行
create database dba;//创建dba数据库
use dba;
create table t(id int,c1 varchar(10),primary key(id));//创建数据表
insert into t values(1,'aa'),(2,'bb');//插入测试数据
select * from t;查看数据
然后创建从数据库用户名密码。
create user 'dba'@'118.25.235.%' identified by '123456';
从库ip段,也可以create user 'dba'@'%' identified by '123456';(任意ip都可以访问),dba是用户名,123456是密码;
给用户授权
grant replication slave on *.* to 'dba'@'118.25.235.%' identified by '123456';
退出mysql;
exit
然后进入主库服务器目录备份数据库,这里目录可以随意,我这里进入根目录下的usr目录里。
cd /usr
备份数据库
mysqldump --single-transaction --master-data=2 --triggers --routines --all-databases -uroot -p >all.sql
使用scp将all.sql文件复制到从库服务器usr目录下
scp all.sql root@118.25.235.81:/usr
然后切换到从服务器
进入usr目录查看
usr目录下已经有all.sql文件了。
将all.sql文件导入从数据库
mysql -uroot -p <all.sql
查看all.sql文件详情
more all.sql
记录下master_log_file和master_log_pos。
按q退出;
进入从库mysql
执行
change master to master_host='182.61.55.223',master_user='dba',master_password='123456',master_log_file='mysql-bin.000005',master_log_pos=1307;
注:master_log_file和Master_log_pos改成上图的,master_host是主库ip。
启动从库
start slave;
查看从状态
show slave status \G;
只有这2个都是Yes才代表成功了,注意要关闭防火墙,安全组要放开端口。
如果报以下错误
退出mysql,编辑 etc目录下面的my.cnf文件,修改server_id=2;
vim /etc/my.cnf;
再进入mysql执行
set global server_id=2;
重启
start slave;
查询从库数据
向主库添加数据
insert into t values(9,'aa'),(10,'bb');
从库也自动增加了