MySQL 主从复制的详细步骤

mysql的主从复制大概思路
1:主库开启二进制文件,将变更的内容写入到主库的binlog中
2:从库的IO进程读取主库的binlog内容存储到relay log日志中
a)二进制日志点(方案一)
b)GTID(mysql>=5.7)(方案二)
3:从库中的sql进程读取relay log日志存放到从库中

mysql的主从复制步骤(方案一)
1.需要注意的是两台linux的时间相同,MySQL版本最好相同,否则主服务器的mysql版本要低于从服务器的版本,要不然容易报错导致复制失败。
主服务器: 123.56.9.233
从服务器: 101.200.38.225
2:
配置主数据库服务器参数(主服务器master)
找到主数据库的配置文件/etc/my.cnf(或者my.ini),在[mysqld]部分插入如下两行

a) log-bin=mysql-bin //开启二进制日志
b) server-id=124 //设置server-id(一般设置为主机ip的后三位) 唯一性

保存,并重启mysql

service mysqld restart//重启mysql

在mysql命令行中输入,查看是否设置成功server-id

show variables like ‘server_id’;

配置从服务器的参数(slave)
找到从数据库的配置文件/etc/my.cnf(或者my.ini),在[mysqld]部分插入如下

log_bin = mysql-bin //开启二进制文件
server-id = 225 //设置server-id 从服务器ip主机的后三位
relay_log=relay-bin
read_only=on
#super_read_only=on //设置root账号的权限,一般不用设置
skip_slave_start = on
master_info_repository = TABLE //存入表中
relay_log_info_repository=TABLE
log-error=/var/log/mysqld.log //错误日志的文件

重启mysql服务

service mysqld restart//重启mysql

注意主服务器的uuid 和从服务器的uuid不能重复,否则导致复制失败

3:在master服务器上创建用于复制的数据库账号
用于IO进程链接master服务器获取binlog日志,需要 REPLICATION SLAVE 权限
进入MySQL命令行,创建MySQL用户并授权
用户名:repl 密码 :123456 (你们自定义哈)
//创建用户
create user ‘用户名称’@‘ip段’ identified by ‘密码’;

create user ‘repl’@‘101.200.38.225’ identified by ‘123456’;

//赋予权限

GRANT REPLICATION SLAVE ON . TO ‘repl’@‘101.200.38.225’;

//刷新权限

FLUSH PRIVILEGES;

//查看master状态 获取二进制文件的名称和位置,用于在从服务器上配置主服务器账号的信息
在mysql命令行中输入

SHOW MASTER STATUS;

在这里插入图片描述
4:备份master服务器上的数据并初始化slavel服务器数据(从服务器为空省略此步骤)
a)建议主从数据库服务器采取相同的mysql版本
注意master服务器的版本低于从服务器
b)建议使用全库备份的方式初始化从服务器(slave)
5:启动复制链路(从服务器上运行)
在mysql命令行中输入

//主服务器的信息 创建的账号信息
CHANGE MASTER TO
MASTER_HOST=‘123.56.9.233’,
MASTER_USER=‘repl’,
MASTER_PASSWORD=‘123456’,
MASTER_LOG_FILE=‘mysql-bin.000018’,
MASTER_LOG_POS=3551;

在MySQL命令行执行以下命令启动slave同步进程

start slave;

查看slave状态

SHOW SLAVE STATUS\G;
在这里插入图片描述

当Slave_IO_Running和Slave_SQL_Running都为YES的时候就表示主从同步设置成功了。
验证:
主数据库建立数据库,删除数据库,插入数据表,备数据库是否即时同步

还可以用到的其他相关参数:
master开启二进制日志后默认记录所有库所有表的操作,可以通过配置来指定只记录指定的数据库甚至指定的表的操作,具体在mysql配置文件的[mysqld]可添加修改如下选项:
#不同步哪些数据库

binlog-ignore-db = mysql
binlog-ignore-db = test
binlog-ignore-db = information_schema

#只同步哪些数据库,除此之外,其他不同步

binlog-do-db = game

主从复制到此结束,有点啰嗦了

猜你喜欢

转载自blog.csdn.net/weixin_38615720/article/details/112463325