2020-09-30 11:34:00
围观(4082)
环境
Centos 7
MySQL 8
安装及配置 MySQL 8
可参阅这篇文章:CentOS7 安装 PHP7.3 和 MySQL8.0
如果新建了一个用户,还需要给这个用户远程连接的权限。
进入到 MySQL 模式,执行:
mysql> use mysql; Database changed mysql> select host,user from user; +-----------+------------------+ | host | user | +-----------+------------------+ | localhost | bubaijun_com | | localhost | mysql.infoschema | | localhost | mysql.session | | localhost | mysql.sys | | localhost | root | +-----------+------------------+ 5 rows in set (0.00 sec)
然后执行:
update user set host='%' where user='bubaijun_com';
注意:bubaijun_com 为新建用户的用户名。
刷新(清空)权限:
flush privileges
还需要在防火墙开放一下 3306 端口:
firewall-cmd --zone=public --add-port=3306/tcp --permanent
重启防火墙:
systemctl restart firewalld.service
此时可通过数据库管理工具连接。
继续重复同样的操作安装第二台服务器的 MySQL.
配置主服务
使用 vim 修改 /etc/my.cnf 文件,添加两个配置:
## 注意每台服务器唯一 server-id=10 ## 开启二进制日志功能 log-bin=mysql-bin
需要重启 MySQL:
systemctl restart mysqld
配置从服务
同样使用 vim 修改 /etc/my.cnf 文件,添加两个配置:
## 设置server_id,注意每台服务器唯一 server-id=20 ## 开启二进制日志功能,以备 Slave 作为其它 Slave 的 Master 时使用 log-bin=mysql-slave-bin ## relay_log 配置中继日志 relay_log=edu-mysql-relay-bin ## 需要主从同步的数据库名 replicate-do-db=cool
同样要重启 MySQL. 重启后进入 MySQL 并执行:
change master to master_host='192.168.31.151', master_user='bubaijun_com', master_password='Passbubaijun.com99&&', master_port=3306, master_log_file='mysql-bin.000001', master_log_pos= 156, master_connect_retry=30;
上面代码中的 master_host 是主服务的地址,后面的 master_user 是创建的用户,以此类推自行修改。
master_log_file 和 master_log_pos 通过进入主服务器的 MySQL 并执行:
show master status;
可查看。
如:
+------------------+----------+--------------+------------------+-------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +------------------+----------+--------------+------------------+-------------------+ | mysql-bin.000001 | 156 | | | | +------------------+----------+--------------+------------------+-------------------+
则 master_log_file = mysql-bin.000001
master_log_pos = 156
开启主从复制(需要进入到 MySQL 执行):
start slave;
可以查看主从同步状态(需要进入到 MySQL 执行):
show slave status \G;
如果显示 Slave_IO_Running 和 Slave_SQL_Running 都为 Yes 则说明主从复制已经开启。
测试主从同步
在主服务器的 MySQL 上创建 cool 数据库,从服务器的 MySQL 上会自动也创建 cool 数据库,因为会自动同步:
继续创建数据库及插入数据测试:
为了插入数据测试更直观,博主开了两个客户端:
读写分离
读写分离是常见的数据库优化手段,假如数据库达到一定性能瓶颈,就可以先将数据库进行主从复制,写入数据和查询数据时使用两台不同配置(也可相同配置 无限制的 不同配置主要是按性能需求不一自行配置 如有些项目读多写少 有些读少写多)的服务器进行分开读和写。
注
数据库版本需要一致。
本文地址 : bubaijun.com/page.php?id=210
版权声明 : 未经允许禁止转载!
上一篇文章: SQL查询每科分数最高的
下一篇文章: Laravel 批量插入数据并去重