您现在的位置是:网站首页> 编程资料编程资料
StoneDB主从配置及切换实践方案_数据库其它_
2023-05-27
303人已围观
简介 StoneDB主从配置及切换实践方案_数据库其它_
StoneDB 的主从切换既可以手动切换,也可以自动切换,自动切换通常需要使用第三方中间件。本文介绍的是较为常用的中间件 Replication Manager,当 master 发生宕机时,可自动切换至 slave,保证业务正常运行,故障节点恢复后再加入主从。
服务器配置说明
IP | Memory | CPU | OS version |
---|---|---|---|
192.168.30.40 | 8G | 8C | CentOS Linux release 7.9 |
192.168.30.41 | 8G | 8C | CentOS Linux release 7.9 |
192.168.30.42 | 8G | 8C | CentOS Linux release 7.9 |
192.168.30.46 | 16G | 16C | CentOS Linux release 7.9 |
注:主从环境中的各个服务器的配置一般情况下建议是一致的,但由于 StoneDB 不管重放 binlog,还是用于 OLAP 场景的查询,都是较消耗系统资源的,建议 StoneDB 配置略高于 MySQL。
主从环境说明
IP | DATABASE | ROLE | DB version |
---|---|---|---|
192.168.30.40 | MySQL | master | MySQL 5.7 |
192.168.30.41 | / | Replication Manager | / |
192.168.30.42 | MySQL | slave | MySQL 5.7 |
192.168.30.46 | StoneDB | slave | StoneDB 5.7 |
注:MySQL 与 StoneDB 的版本建议保持一致。
推荐采用一主两从的架构,其中 StoneDB 不参与主从切换:
1)master(192.168.30.40)使用 InnoDB 引擎,可读写,提供 OLTP 场景的读写业务;
2)slave1(192.168.30.42)使用 InnoDB 引擎,只读,同时作为 standby,当 master 发生宕机时,可切换至 slave1,保证业务正常运行;
3)slave2(192.168.30.46)使用 Tianmu 引擎,只读,提供 OLAP 场景的读业务。
1、操作系统环境检查
操作系统环境检查的步骤在四个节点均需要执行。
1.1 关闭防火墙
# systemctl stop firewalld # systemctl disable firewalld
1.2 关闭SELINUX
# vim /etc/selinux/config SELINUX = disabled
1.3 设置Swap分区
修改vm.swappiness的值为1,表示尽量不使用Swap。
# vi /etc/sysctl.conf vm.swappiness = 1
1.4 修改操作系统的限制
# ulimit -a core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 1031433 max locked memory (kbytes, -l) 64 max memory size (kbytes, -m) unlimited open files (-n) 65535 pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) 819200 real-time priority (-r) 0 stack size (kbytes, -s) 10240 cpu time (seconds, -t) unlimited max user processes (-u) 1024 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited 修改操作系统的软硬限制 # vim /etc/security/limits.conf * soft nofile 65535 * hard nofile 65535 mysql soft nproc 1028056 mysql hard nproc 1028056
1.5 创建用户
# groupadd mysql # useradd -g mysql mysql # passwd mysql
Replication Manager 节点无需创建,以上步骤执行完之后,重启操作系统。
2、部署MySQL
在 master 节点和 slave1 节点安装 MySQL。
2.1 下载安装包
https://downloads.mysql.com/archives/community/从官网下载 MySQL 5.7 的安装包。
2.2 卸载mariadb
# rpm -qa|grep mariadb mariadb-5.5.56-2.el7.x86_64 mariadb-server-5.5.56-2.el7.x86_64 mariadb-libs-5.5.56-2.el7.x86_64 # yum remove mariadb* # rpm -qa|grep mariadb
2.3 上传tar包并解压
# tar -zxvf mysql-5.7.36-linux-glibc2.12-x86_64.tar.gz -C /usr/local/ # cd /usr/local/ # mv mysql-5.7.36-linux-glibc2.12-x86_64 mysql
2.4 创建目录
# mkdir -p /mysql/data/ # mkdir -p /mysql/log # chown -R mysql:mysql /mysql/
2.5 配置参数文件 my.cnf
master
# vim /etc/my.cnf [client] port = 3306 socket = /mysql/data/mysql.sock [mysqld] port = 3306 basedir = /usr/local/mysql datadir = /mysql/data socket = /mysql/data/mysql.sock pid_file = /mysql/data/mysqld.pid log_error = /mysql/log/mysqld.log log_bin = /mysql/log/mybinlog server_id = 40 character_set_server = utf8mb4 collation_server = utf8mb4_general_ci max_connections = 1000 binlog_format = row default_storage_engine = innodb read_only=0 innodb_buffer_pool_size = 4096000000 innodb_log_file_size = 1024000000 innodb_log_files_in_group = 3 innodb_io_capacity = 4000 innodb_io_capacity_max = 8000 #开启GTID模式 gtid_mode = on enforce_gtid_consistency = 1 #并行复制 binlog_transaction_dependency_tracking = WRITESET transaction_write_set_extraction = XXHASH64
slave1
# vim /etc/my.cnf [client] port = 3306 socket = /mysql/data/mysql.sock [mysqld] port = 3306 basedir = /usr/local/mysql datadir = /mysql/data socket = /mysql/data/mysql.sock pid_file = /mysql/data/mysqld.pid log_error = /mysql/log/mysqld.log log_bin = /mysql/log/mybinlog server_id = 42 character_set_server = utf8mb4 collation_server = utf8mb4_general_ci max_connections = 1000 binlog_format = row default_storage_engine = innodb read_only=1 innodb_buffer_pool_size = 4096000000 innodb_log_file_size = 1024000000 innodb_log_files_in_group = 3 innodb_io_capacity = 4000 innodb_io_capacity_max = 8000 #开启GTID模式 gtid_mode = on enforce_gtid_consistency = 1 #并行复制 slave_parallel_type = LOGICAL_CLOCK slave_parallel_workers = 4
2.6 初始化实例
/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --initialize --user=mysql
2.7 启动实例
/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql &
注:管理员用户的临时密码在 mysqld.log 中,第一次登陆后需要修改管理员用户的密码。
3、部署StoneDB
3.1 下载安装包
https://stonedb.io/zh/docs/download/从官网下载 StoneDB 5.7 的安装包。
3.2 上传tar包并解压
提示: 本文由神整理自网络,如有侵权请联系本站删除!
本站声明:
1、本站所有资源均来源于互联网,不保证100%完整、不提供任何技术支持;
2、本站所发布的文章以及附件仅限用于学习和研究目的;不得将用于商业或者非法用途;否则由此产生的法律后果,本站概不负责!
点击排行
本栏推荐
