一、.环境准备:
1)服务器准备:
主服务器:
192.168.137.158
从服务器:
192.168.137.155
2)主从服务器安装mysql数据库:
此处省略
注:请参考我的mysql5.7.27安装,请选择离线安装方式
二、主服务器配置:
1)修改mysql数据库配置文件
vim /etc/my.cnf
在[mysqld]加入下面的内容:
# 服务的唯一编号
server-id = 1
# 开启mysql binlog功能
log-bin = mysql-bin
# binlog记录内容的方式,记录被操作的每一行
binlog_format = ROW
# 减少记录日志的内容,只记录受影响的列
binlog_row_image = minimal
# 指定需要复制的数据库名为testdb
binlog-do-db = testdb
2)重启服务:
service mysqld restart
3)创建从库同步数据的账号:
mysql -uroot -p (其中“root”是账号名,输入密码进入mysql终端模式)
grant replication slave on *.* to 'root'@'192.168.197.136' identified by '123456';
flush privileges;(刷新权限表结构)
注:root:数据库账户名,“123456”:密码(可能会出现Your password does not satisfy the current policy requirements,请修改密码数据库密码策略)
4)查看主库状态:
show master status\G
注:不要加“;”,否则会报(No query specified ==>出现此错误
)
三、配置从库
1)修改配置文件
vim /etc/my.cnf
在[mysqld]加入下面的内容:
# 服务的唯一编号
server-id = 2
# 开启mysql binlog功能
log-bin = mysql-bin
# binlog记录内容的方式,记录被操作的每一行
binlog_format = ROW
# 减少记录日志的内容,只记录受影响的列
binlog_row_image = minimal
# 指定需要复制的数据库名为testdb
binlog-do-db = testdb
2)重启服务:
service mysqld restart
3)执行同步命令
mysql -uroot -p(输入密码,进入mysql终端模式)
# 设置主服务器ip,同步账号密码,同步位置 :
change master to master_host='192.168.137.158',master_user='root',master_password='123456',master_log_file='mysql-bin.000002',master_log_pos=2380;
注:master_log_file='mysql-bin.000002'(要与配置主库的第四xiao步,截图中的file一致)
4)启动同步功能:
start slave;
5)查询从库状态
show slave status\G
注:Slave_IO_Running和Slave_SQL_Running的状态都为Yes时,才说明配置成功。
三、测试:
1)在主库上创建testdb数据库,即
create schema testdb;(如对create schema语法不熟悉可以自行百度查看)
2)创建测试表:
use testdb;
CREATE TABLE test_config (id varchar(200) NOT NULL ,name varchar(1024) DEFAULT NULL ,description varchar(2000) DEFAULT NULL ,PRIMARY KEY (id)) ENGINE=InnoDB DEFAULT CHARSET=utf8 ;
3)插入数据测试:
insert into test_config(id, name, description) values('1', '测试', '测试一下');
4)在从库上查看schemas模式:
show schemas;
注:如果出现test_config表说明主从配置成功
5)在从库上查看表,,并查看数据:
use testdb;
show tables;
select * from test_config;
四、可能出现的问题:
1)第一种情况:Slave_IO_Running:NO
查询主从库状态,确保如下文件名一致
进入mysql终端,设置步骤:
① slave stop;
② CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000002', MASTER_LOG_POS=0;
③ slave start;
④ show slave status\
2)第二种情况:Slave_SQL_Running:NO
进入mysql终端,设置步骤
① slave stop;
② SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; START SLAVE;
③ slave start;
④ show slave status\