公司有两台服务器,其中一台用于app后端服务和数据库数据存储和备份,另外一台基本没什么用
主服务器压力一直有点过大,频繁的自动备份导致磁盘空间也有点不够用
-
主服务器状态
-
从服务器状态
主从复制解决的问题:
1.数据备份不被丢失
2.读写分离
3.数据库负载均衡
4.高可用
所以想通过mysql主从复制减轻主服务器的压力,从而提高并发能力。
主从复制后,将查询工作/备份工作交给从库完成,主库进行写的操作
实现步骤
设置主服务器
1.修改mysql的配置文件(my.conf),使其支持二进制日志功能。
我查看自己的mysql配置后发现这几项配置都已经写好了,无需修改
log-bin=mysql-bin //将mysql二进制日志取名为mysql-bin
binlog_format=mixed //二进制日志的格式,有三种:statement/row/mixed,具体分别不多做解释,这里使用mixed
server-id=1 //为服务器设置一个独一无二的id便于区分,这里使用ip地址的最后一位充当server-id
binlog-do-db = xxx //指定复制的数据库,这条在配置中没有,需要自己加
2.在主服务器上开放权限
在mysql命令行输入:
GRANT replication slave ON *.* TO 'slave_user_name'@'ip_table' IDENTIFIED BY 'password';
replication slave 复制权限
. 可以操作哪个数据库
slave 用户名
'%' 可以操作的用户IP,可以指定某个ip,
BY 访问密码
3.配置完成后重启mysql
4.导出想要主从复制的数据库,导出的同时执行以下命令,记录两个关键参数,file和position,配置从库的时候需要用到。
5.将导出的数据库导入到从库中(首次实现主从同步要将主库上需要同步的数据库整的导入到从库中 )
6.设置从服务器
mysql> change master to
MASTER_HOST='47.xxx.xxx.xx', //对应主服务器的访问IP
MASTER_USER='slave',//对应主服务器上开通的用户名
MASTER_PASSWORD='shenchi2020',//对应主服务器上开通用户的密码
MASTER_LOG_FILE='mysql-bin.000026',//对应主服务器上file的日志文件名
MASTER_LOG_POS=115969; ,//对应主服务器上开始复制的position位置
Query OK, 0 rows affected, 2 warnings (0.05 sec)
7.在从库中开始执行主从复制
stop slave
start slave
8.在 Slave 的 MySQL 终端执行查看主从同步状态:
show slave status \G;
Slave_IO_Running:Yes
Slave_SQL_Running:Yes
则表示同步成功,这时就可以对从库进行备份操作了