MySQL主从复制与读写分离的实现
来源:互联网 发布:广发淘宝卡 集分宝2017 编辑:程序博客网 时间:2024/06/05 12:08
mysql 主从复制用途
- 实现灾备
- 读写分离,提供查询服务
- 备份,避免影响业务
主从部署必要条件:
- 主库开启binlog日志(设置log-bin参数)
- 主从server-id 不同
- 从库服务器能连通主库
复制原理:
- master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events);
- slave将master的binary log events拷贝到它的中继日志(relay log);
- slave重做中继日志中的事件,将更改应用到自己的数据上。
问题及解决方法:
mysql 主从复制存在的问题:
- 主库宕机后,数据可能丢失
- 从库只有一个sql Thread ,主库写压力大,复制很可能延时
解决方法:
- 半同步复制—解决数据库丢失的问题
- 并行复制— 解决从库复制延迟的问题
node1主节点 192.168.243.7
[root@centos7 ~]#vim /etc/my.cnf.d/server.cnf 9 [server] 10 innodb_file_per_table=ON 11 skip_name_resolve=ON 12 max_connections=20000 最大连接数根据情况而定 13 log_bin=master-log 14 server_id=1
[root@centos7 ~]#systemctl start mariadb.service MariaDB [(none)]> show master status;-------------------+----------+--------------+------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |+-------------------+----------+--------------+------------------+| master-log.000003 | 245 | | |+-------------------+----------+--------------+------------------MariaDB [(none)]> GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'repluser'@'192.168.243.%' IDENTIFIED BY 'CENTOS';MariaDB [(none)]> FLUSH PRIVILEGES;MariaDB [(none)]> SHOW MASTER STATUS;+-------------------+----------+--------------+------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |+-------------------+----------+--------------+------------------+| master-log.000003 | 497 | | |+-------------------+----------+--------------+------------------+1 row in set (0.00 sec)
node2 从节点 192.168.243.9
[root@R2 ~]#vim /etc/my.cnf.d/server.cnf 9 [server] 10 skip_name_resolve=on 11 innodb_file_per_table=on 12 max_connections=20000 13 14 relay_log=relay-log 15 server_id=2MariaDB [(none)]> CHANGE MASTER TO MASTER_HOST='192.168.243.7',MASTER_USER='repluser',MASTER_PASSWORD='CENTOS',MASTER_LOG_FILE='master-log.000003',MASTER_LOG_POS=497;MariaDB [(none)]> SHOW SLAVE STATUS\G; 查看从节点状态MariaDB [(none)]> START SLAVE IO_THREAD,SQL_THREAD; 启动线程此时我们在主服务器上创建一个数据库,可以发现从服务器上显示刚创建的新数据库主:MariaDB [(none)]> create database mydb;从:MariaDB [(none)]> show databases;
mysql的读写分离:
基于ProxySQL 的读写分离,在主数据库上只执行写操作,在从服务器上执行读操作。这样可以分散数据的读写压力。
实验环境: 清空防火墙规则,关闭selinux ,时间同步
三台主机
proxysql :192.168.243.7
node1(主数据库服务器)192.168.243.8
node2(从数据库服务器)192.168.243.9
两台数据库做主从同步
官网下载的proxysql包
[root@centos7 ~]#yum -y install proxysql-1.4.2-1-centos7.x86_64.rpm [root@centos7 ~]#cp /etc/proxysql.cnf{,.bak}[root@centos7 ~]#vim /etc/proxysql.cnf
9 datadir="/var/lib/proxysql" 10 11 admin_variables= 12 { 13 admin_credentials="admin:admin" 14 # mysql_ifaces="127.0.0.1:6032;/tmp/proxysql_admin.sock" 15 mysql_ifaces="0.0.0.0:6032" 16 # refresh_interval=2000 17 # debug=true 18 } 20 mysql_variables= 21 { 22 threads=4 #启动多少个线程链接mysql 23 max_connections=2048 #最大并发链接数 24 default_query_delay=0 #默认查询延迟 25 default_query_timeout=36000000 #默认查询超时时间 26 have_compress=true #是否压缩 27 poll_timeout=2000 28 interfaces="0.0.0.0:6033;/tmp/proxysql.sock" 29 # interfaces="0.0.0.0:6033" 30 default_schema="information_schema" 31 stacksize=1048576 #栈大小 32 server_version="5.5.30" 33 connect_timeout_server=3000 36 monitor_username="monitor" 37 monitor_password="monitor" 38 monitor_history=600000 #保留的监控历史时长 39 monitor_connect_interval=60000 #链接后端主机的超时时间长 40 monitor_ping_interval=10000 41 monitor_read_only_interval=1500 42 monitor_read_only_timeout=500 43 ping_interval_server_msec=120000 44 ping_timeout_server=500 45 commands_stats=true 46 sessions_sort=true 47 connect_retries_on_failure=10 #连接失败后的重试间隔 48 } 52 mysql_servers = 53 ( 54 { 55 address = "192.168.243.8" 56 port = 3306 57 hostgroup = 0 # no default, required 58 status = "ONLINE" # default: ONLINE 59 weight = 1 # default: 1 60 compression = 0 # default: 0 61 # max_replication_lag = 10 62 }, 63 { 64 address = "192.168.243.9" 65 port = 3306 66 hostgroup = 1 67 status = "ONLINE" 68 weight = 1 69 compression = 0 70 }#注意没有逗号#定义与数据库连接时使用的账号信息 90 mysql_users: 91 ( 92 { 93 username = "root" # no default , required 94 password = "CENTOS" # default: '' 95 default_hostgroup = 0 # default: 0 96 max_connections=1000 97 default_schema="mydb" 98 active = 1 # default: 1 99 }#查询规则114 mysql_query_rules:115 (130 )#调度器132 scheduler=133 (145 )148 mysql_replication_hostgroups=149 (150 {156 writer_hostgroup=0 #写组157 reader_hostgroup=1 #读组159 }160 )
[root@centos7 ~]#systemctl restart proxysql.service [root@proxy ~]# ss -ntl
看到管理接口的端口是6032, 客户端接口的端口是6033
登陆:
[root@centos7 ~]#mysql -udbadmin -pCENTOS -h 192.168.243.8[root@centos7 ~]#mysql -S /tmp/proxysql_admin.sock -uadmin -padmin
阅读全文
0 0
- MySQL主从复制与读写分离的实现
- MySQL主从复制与读写分离的实现
- MySQL主从复制与读写分离的实现
- MySQL主从复制与读写分离的实现
- MySQL主从复制与读写分离的实现
- Mysql的主从复制与读写分离
- Mysql的主从复制与读写分离
- mysql的主从复制与读写分离
- mysql的主从复制与读写分离
- MySQL主从复制读写分离与Yii2实现
- mysql 主从复制读写分离实现
- mysql 主从复制读写分离实现
- MySQL主从复制读写分离实现
- MySQL 主从复制和读写分离实现
- mysql 主从复制读写分离实现
- mysql读写分离(主从复制)实现
- MySQL主从复制--实现读写分离
- MySQL主从复制实现读写分离
- 人事管理
- GetInvocationList 方法
- 北京SEO祭司:网站页面的SEO优化
- 安徽省池州市谷歌卫星地图下载
- 优雅高效的MyBatis-Plus工具快速入门使用
- MySQL主从复制与读写分离的实现
- FloatActionButton
- 最新关于PADS9.5与altium designer 16.0.6交互问题
- 一对多关联关系映射和设置级联属性
- 使用MVP模式+OKHttp网络请求 带编辑删除的购物车
- Spring和Struts的全权委托整合
- 写在开头
- linux 编程 信号处理
- Apache mina 入门(三) —— 客户端同步通讯