-
系统:Ubuntu 18.04 TLS
-
MySQL版本:8.0
-
机器:百度云1C2G*2
准备工作
- SSH连接主库服务器
ssh -p[ssh port] [username]@[vps ip]
- 更新源和系统组件
apt-get update
apt-get upgrade
- 安装最新的Vim
apt install vim
MySQL8.0安装
⚠️如过直接使用
apt install mysql-server
来安装恭喜你踩坑了这样安装版本是5.7因为apt
的源没有更新到8.0
-
为系统添加8.0的源
-
wget
或curl
Ubuntu / Debian (Architecture Independent), DEB Package
项的Download的链接,到一个文件夹,比如/opt
-
dpkg -i [Package Path]
-
步骤如下图所示
-
更新源
apt-get update
⚠️如果可看到
mysql-8.0xxxx
那就是成功了 -
安装
apt install mysql-server
-
如图
- 等会儿安装就完成了
主库配置
- 修改my.cnf配置文件
修改主数据库mysql配置,找到主数据库的配置文件my.cnf(或者my.ini),我的在/etc/mysql/my.cnf,在[mysqld]部分插入如下两行
[mysqld]
log-bin=mysql-bin #开启二进制日志
server-id=1 #设置server-id
-
重启MySQL
service mysql restart
-
添加同步用户
CREATE USER 'sync'@'192.168.1.6' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE ON *.* TO 'sync'@'192.168.1.6';
flush privileges;
⚠️ 其中192.168.1.6是从库主机的IP
-
查看master装填并记录二进制文件名和位置
-
打开MySQL会话
-
mysql -uroot -p
-
查看master装填
-
show master status;
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000002 | 511 | | | |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
⚠️️把File和Position的名字记住配置从库时要用到
从库数据库安装
- 请参考主库的安装流程
从库配置
-
修改mysql配置
-
同样找到my.cnf配置文件并修改
[mysqld]
server-id=2 #设置server-id,必须唯一
- 重启从库
service mysql restart
- 打开MySQL会话配置从库
CHANGE MASTER TO
MASTER_HOST='master2.example.com',
MASTER_USER='replication',
MASTER_PASSWORD='password',
MASTER_PORT=3306,
MASTER_LOG_FILE='master2-bin.001',
MASTER_LOG_POS=4,
MASTER_CONNECT_RETRY=10;
-
解释
MASTER_HOST
主库IPMASTER_USER
用于同步的账户MASTER_PASSWORD
账户密码MASTER_PORT
用来同步的端口MASTER_LOG_FILE
刚才记录的主库FileMASTER_LOG_POS
刚才记录的主库PositionMASTER_CONNECT_RETRY
超时等待时间
-
启动slave同步进程
start slave;
#这是停止 stop slave;
- 查看slave状态
show slave status\G;
Slave_IO_State: Waiting for master to send event
Master_Host: 172.16.0.7
Master_User: sync
Master_Port: 3306
Connect_Retry: 10
Master_Log_File: mysql-bin.000003
Read_Master_Log_Pos: 15258
Relay_Log_File: instance-qdlp974n-relay-bin.000003
Relay_Log_Pos: 15472
Relay_Master_Log_File: mysql-bin.000003
Slave_IO_Running: Yes # Yes Succces
Slave_SQL_Running: Yes # Yes Succces
⚠️
Slave_IO_Running
和Slave_SQL_Running
都是Yes说明成了
写入测试
在主库新建一个表插入一些数据观察从库是否可以同步过去,效果就是主库和从库数据库和表以及表里的数据应该是一样且同步的。