[Ubuntu]Ubuntu16.04搭建mysql主从数据库
主从复制原理:从机(slave)通过读取和同步主机(master)上的二进制日志上的事件(events),在从机本地的数据库中来重现(也可理解为重做)这些操作,从而达到复制的效果。
本人使用的是在windows上挂在两台 Ubuntu16.04虚拟机 mysql8.0
主:192.168.100.101
从:192.168.100.102
一:安装mysql 8.0
https://blog.csdn.net/qq_36254699/article/details/107890179
二、搭建主从复制:
1、配置主机(Setting the Replication Master Configuration)
1.1、打开配置文件
vim /etc/mysql/mysql.conf.d/mysqld.cnf # 编辑默认的配置文件
1.2、在文件中的mysqld的组中添加一个选项:
server-id = 1 #配置主机的server-id 为 1 主机server-Id 为2
log-bin=mysql-bin
1.3、上步骤保存之后,执行以下命令,重启Mysql服务
service mysql restart
1.4、重新登录MySQL客户端,执行下面的命令
show variables like '%server_id%'
2、从机配置(Setting the Replication Slave Configuration)
从机配置同主机一致
server-id = 2 #配置主机的server-id 为 1 主机server-Id 为2
log-bin=mysql-bin
3、为复制创建用户(Creating a User for Replication)
登录主机MySQL客户端
3.1、给主机创建从机用户
create user 'slave'@'192.168.100.102' identified by 'password';
‘slave’:从机用户名
‘192.168.100.102’ :从机IP
‘password’:从机数据库密码
3.2、创建完用户,赋予权限
grant replication slave on *.* to 'slave'@'192.168.100.102'
如果执行失败,可以授予全部权限:
grant all privileges on *.* to 'slave'@'192.168.100.102';
Mysql 8.0 默认的密码格式为:’mysql_native_password’
3.3、主机上执行命令
show master status;
记住这两个值,后面配置有用
4、在从机上建立主机的配置(Setting the Master Configuration on the Slave)
其中master_log_file和master_log_pos为上一步查询对应的两个值;
CHANGE MASTER TO
MASTER_HOST='192.168.100.101',
MASTER_USER='slave',
MASTER_PASSWORD='slave',
MASTER_LOG_FILE='mysql-bin.000003',
MASTER_LOG_POS=512;
5、开始主从复制服务
start slave ;