基于二进制日志文件位置的复制
#根据前面的文档,搭建两台MySQL服务,具体步骤略
192.129 主
192.127 从
#主:配置这一步是因为my.cnf在/etc/下的话,它不会识别,需要在mysqld.service启动脚本中定义路径,然后需要把/etc/my.cnf配置文件拷贝到定义的目录下
vim /usr/lib/systemd/system/mysqld.service
#刷新使启动脚本生效
#再重启服务
systemctl daemon-reload
systemctl restart mysqld.service
#查看进程路径没问题,服务也已经起来
#从:同样也要定义my.cnf路径,把服务起来
#主和从上都要配置
#检查并配置两台机器的server_id
vi my.cnf #搜索server_id ,如果没有则增加
主上设置为 server_id = 1, 从上设置为 server_id = 2
#重启主和从服务
#主:定义log-bin,可以自定义,这一步在前面安装mysql的时候datadir = /data/mysql这个目录不能删除,否则不会生成相关目录,从上面不用配置
vim /usr/local/mysql/my.cnf
#主:重启服务并检查生成的文件,这个文件也可以默认生成,默认生成的和自定义的用一个就可以
systemctl restart mysqld.service
#主:进入数据库
mysql -uroot -p'123456'
#主:在数据库中,主上创建用作主从复制的用户,授权,刷新权限
create user 'rep'@'192.168.190.127' identified with 'mysql_native_password' by '123456';
grant REPLICATION SLAVE on *.* to 'rep'@'192.168.190.127';
flush privileges;
#主:防火墙放行3306端口,防止拦截
firewall-cmd --permanent --add-port 3306/tcp #做持久化放行3306端口
firewall-cmd --reload #刷新规则
#从:连接主的mysql,指定用户,密码和ip
mysql -urep -p'123456' -h 192.168.190.129
#主:查询日志名字以及位置,后面需要这两个东西
show master status; ##记录下对应的日志命令以及位置
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| yanglinux.000003 | 1294 | | | |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
mysql>
#从:到从上执行,连接从自己的root用户,执行下面的命令是为了把主从起 起来
change master to master_host='192.168.190.129',master_user='rep',master_password='123456',master_log_file='yanglinux.000003',master_log_pos=1294;
start slave; #启动主从
show slave status\G #检查Running状态
#主:
#测试,
创建一个库在到从上查看有没有同步
create database yangaa; #创建yangaa这个库
#从:查看库
show databases;