手把手教你在linux下搭建mysql主从同步

配置梳理

  1. 主数据库
    开启二进制日志
    设置唯一id
    获取二进制文件名和位置
    创建用于通信的账号

  2. 从数据库
    设置唯一id
    使用分配的账号读取主数据库的二进制日志

准备

两台服务器(虚拟机)并且安装mysql 不可以克隆mysql!

主数据库:192.168.0.106
从数据库:192.168.0.109
手把手教你在linux下搭建mysql主从同步_第1张图片

主数据库

修改配置文件

vim /etc/my.cnf

如果是宝塔安装的mysql就是 /www/server/mysql/my.cnf
根据自己的情况而定,总之就是【my.cnf】文件

#主服务器唯一ID(必须配置,必须唯一)
server-id=1
#启用二进制日志
log-bin=mysql-bin
# 设置不要复制的数据库(可设置多个),一般就是mysql的系统数据库
# 如果加了 binlog-do-db 也可以选择不设置 binlog-ignore-db
binlog-ignore-db=mysql 
binlog-ignore-db=information_schema 
#设置需要复制的数据库(未创建的数据库)
binlog-do-db=需要复制的主数据库名字 
#设置logbin格式(大写)
binlog_format=STATEMENT
  • binlog 日志是什么和它的三种格式

手把手教你在linux下搭建mysql主从同步_第2张图片

重启服务

systemctl stop mysql
systemctl start mysql

建立帐户并授权 slave

  • 创建一个专门提供从机远程访问使用的用户
  1. 登录进入mysql
    mysql -u root -p

  2. 执行sql语句
    注意: 这里做练习 用户和密码相对简单,生产环境注意密码强度!

GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%' IDENTIFIED BY '123123';
FLUSH PRIVILEGES;
  1. 查看用户是否创建成功
select user from mysql.user where user = '你刚才创建的用户';

手把手教你在linux下搭建mysql主从同步_第3张图片

查询master的状态

记录二进制文件名File和位置Position,后面配从库要用

执行sql:

show master status;

手把手教你在linux下搭建mysql主从同步_第4张图片
file:binlog日志的名字
Position :接入点 (从机从接入点开始复制)
Binlog_Do_DB :需要复制的数据库
Binlog_Ignore_DB :不需要复制的数据库

注意:从库配置好之前数据库接入点就不要进行任何操作了,避免接入点发生改变,下面来配置从库。


从数据库配置

大同小异

修改配置文件

vim /etc/my.cnf

如果是宝塔安装的mysql就是 /www/server/mysql/my.cnf
根据自己的情况而定,总之就是【my.cnf】文件

#从服务器唯一ID
server-id=2
#启用中继日志
relay-log=mysql-relay
  • 什么是中继日志?

手把手教你在linux下搭建mysql主从同步_第5张图片

重启服务

systemctl stop mysql
systemctl start mysql

配置需要复制的主机

  1. 登录进入mysql
    mysql -u root -p

  2. 执行命令

CHANGE MASTER TO MASTER_HOST='主机的IP地址', 
MASTER_USER='用户名',
MASTER_PASSWORD='密码', 
MASTER_LOG_FILE='binlog日志的名字,mysql-bin.具体数字',
MASTER_LOG_POS=接入点,具体的值;

我的是这样的:
手把手教你在linux下搭建mysql主从同步_第6张图片

注意:如果你这台服务器之前搭建过主从,可能会报错,重置一下就可以

stop 用户名;
reset master;

手把手教你在linux下搭建mysql主从同步_第7张图片
重复第二步

  1. 启动从服务器复制功能
start slave;

4.查看从服务器状态

show slave status\G;

我的是这样的:
手把手教你在linux下搭建mysql主从同步_第8张图片
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
表示成功!如果不是,就看报错信息,然后解决。
手把手教你在linux下搭建mysql主从同步_第9张图片


注意:别忘了把数据库的3306端口打开,不然无法进行远程访问!!!


测试

  1. 主库创建约定好的表:testdb,然后创建一张表并且插入数据
create database testdb;
use testdb;
create table mytab1(id int(11),name varchar(20));
insert into mytab1 values(1,'zhang3');
select * from mytab1;

检查一下:
手把手教你在linux下搭建mysql主从同步_第10张图片

  1. 在从库查看是否同步
show databases;
use testdb;
show tables;
select * from mytab1;

手把手教你在linux下搭建mysql主从同步_第11张图片


附:

如何停止从服务复制功能

stop slave;

如何重新配置主从

stop slave; 
reset master;

linux下搭建mysql多主多从
利用mycat读写分离

有用请三联,不胜感激!

你可能感兴趣的:(mycat学习笔记,数据库,数据库,mysql,linux)