Mysql读写分离操作
程序员文章站
2023-01-22 19:11:35
环境:两台centos环境,安装mysql(mariadb) web网站的优化: 缓存技术 数据库缓存 redis 文件缓存 图片 fastdfs 负载均衡 nginx 数据库主从备份,读写分离 图解: 在工作中,为了防止数据损坏,使用主从备份这种架构(复制集),为了满足mysql的性能要求,为了提 ......
环境:两台centos环境,安装mysql(mariadb)
web网站的优化:
- 缓存技术 数据库缓存 redis
- 文件缓存 图片 fastdfs
- 负载均衡 nginx
- 数据库主从备份,读写分离
图解:
在工作中,为了防止数据损坏,使用主从备份这种架构(复制集),为了满足mysql的性能要求,为了提高吞吐量使用复制集之后还可搭建读写分离去提高性能。
搭建主从
在master(主机名) 和slave(从机名) 都需要操作安全向导
mysql_secure_installation
systemctl restart mariadb 重启服务 mysql -u root -p 使用密码登陆
关闭主从防火墙和安全模式
systemctl stop firewalld setenforce 0
slave 操作
systemctl restart mariadb mysql -uroot -p create database ourblog charset=utf8; exit 将刚导入的sql文件导入到salve库中 mysql -h localhost -u root -p111111 ourblog < /opt/ourblog.sql
修改配置文件
-
master配置文件
vi /etc/my.cnf 增加代码 server-id=1 log_bin=mysql-bin? binlog-do-db=ourblog binlog-ignore-db=mysql 保存文件 重启 mariadb
-
slave修改
修改配置文件 vi /etc/my.cnf 增加下面代码 server-id=2 log_bin=mysql-bin? binlog-do-db=ourblog binlog-ignore-db=mysql 保存 重启
-salve 配置
change master to master_host="10.10.14.154",master_user="root",master_password='111111',master_log_file="mysql-bin?.000001",master_log_pos=245;
-slave 库当中
数据库当中 slave start 开始备份 show slave status \g
-salve库当中
查看slave 状态 show slave status \g 停止slave stop slave; 开启slave start slave 查看master 状态 show master status;
在 master中写入数据,然后在slave中查看数据
- master 主库 slave 从库
- binary log 二进制文件。relay log 中继器日志
- i/o线程,sql线程
- 当客户端发器insert操作,操作的master库(事务)由master服务将sql语句转为二进制,存储到二进制日志文件中,然后执行commit 操作,将事务结果存储到master 库当中。
- slave 开通一个io线程,线程阻塞等到,监听二进制文件是否有改变,如果有的,读取到中继器当中,
- sql线程会定期查看中继器中的内容,然后重演,将改变写入slave库当中。