coldsmog运维笔记
Linux 中间件部署
升级MySQL至最新版本
Zabbix与Zabbix-agent2部署
Galera-Cluster-MySQL 部署
JDK8 部署
FastDFS 部署
MySQL 主从备搭建
RabbitMQ 部署
Redis 部署
Nginx 部署
Gitlab + Jenkins + Sonarqube 部署
Docker 部署
keepalive的安装
Gitlab-ce 部署
Graalvm 部署
Nacos 部署
Kafka 部署
PostgreSQL 部署
MongoDB 部署
Fizz网关搭建
Vue项目部署(Nginx)
CentOS 运维笔记
centos 添加自定义服务
Linux 系统挂载
MySQL命令行
故障排查
Docker 运维笔记
keepalived 配置笔记
win 编辑EFI
本文档使用 MrDoc 发布
-
+
首页
Galera-Cluster-MySQL 部署
## 禁用SELinux 您必须禁用SELinuxmysqld或对其进行配置,以允许mysqld其运行外部程序并在非特权端口上打开侦听套接字,即非特权用户可以执行的操作。 1. 编辑 /etc/selinux/config,令SELINUX=disabled 2. 保存后重启 3. getenforce 命令查看状态 ## 开启数据库端口和集群端口 ``` firewall-cmd --zone=public --add-port=3306/tcp --permanent firewall-cmd --zone=public --add-port=4567/tcp --permanent firewall-cmd --zone=public --add-port=4568/tcp --permanent firewall-cmd --zone=public --add-port=4444/tcp --permanent firewall-cmd --zone=public --add-port=4567/upd --permanent firewall-cmd --reload ``` ## 写入hosts,非必要 ``` echo 172.16.19.163 mysql.galera.test1 >> /etc/hosts echo 172.16.19.164 mysql.galera.test2 >> /etc/hosts echo 172.16.19.50 mysql.galera.test3 >> /etc/hosts /etc/init.d/network restart ``` ## 下载galera ``` cat > /etc/yum.repos.d/galera.repo <<EOF [galera] name=galera baseurl= http://releases.galeracluster.com/galera-3/centos/7/x86_64/ gpgcheck=0 [mysql-wsrep] name = mysql-wsrep baseurl = http://releases.galeracluster.com/mysql-wsrep-5.7/centos/7/x86_64/ gpgcheck = 0 EOF yum makecache yum repolist yum install -y mysql-wsrep-5.7 galera-3 # 增量备份插件 innobackupex yum localinstall -y https://mirrors.tuna.tsinghua.edu.cn/percona/centos/7/RPMS/x86_64/percona-xtrabackup-24-2.4.9-1.el7.x86_64.rpm ``` ## 编辑数据配置并进行调优 ``` [mysqld] user = mysql # Remove leading # to set options mainly useful for reporting servers. # The server defaults are faster for transactions and fast SELECTs. # Adjust sizes as needed, experiment to find the optimal values. # join_buffer_size = 128M # sort_buffer_size = 2M # read_rnd_buffer_size = 2M sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' datadir=/var/lib/mysql #socket=/var/lib/mysql/mysql.sock log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 ## see more:https://galeracluster.com/library/training/tutorials/configuration.html wsrep_on=ON # 插件包so的位置 wsrep_provider=/usr/lib64/galera-3/libgalera_smm.so # 所有节点必须一致us wsrep_cluster_name='galera' # 添加所有可能的节点IP,第一个连接需要为初始化集群节点的IP wsrep_cluster_address='gcomm://172.16.18.13,172.16.18.14,172.16.18.15' # 节点名称 wsrep_node_name='galera3' # 节点期望接收客户端连接的IP地址和端口号 wsrep_node_address='172.16.18.15' # 复制时身份验证信息(即用户名:密码),除了逻辑复制mysqldump,其他方法不需要此参数 wsrep_sst_auth=galera:XXXXXXX123 # 定义节点在状态快照传输中使用的方法或脚本。 # mysqldump 除小数据集外,这速度很慢,但它是测试最多的选项 # rsync 默认值.最快,但只能在节点启动时使用,不能和运行中的InnoDB存储引擎一起使用 # rsync_wan 此选项与几乎相同rsync,但是使用delta-xfer算法来最大程度地减少网络流量 # xtrabackup此选项是基于Perconaxtrabackup工具的一种快速且几乎无阻塞的状态转移方法.需要参考官网额外配置 wsrep_sst_method=xtrabackup # MIXED 优先STATEMENT,STATEMENT不能的就ROW记录 # galera只支持ROW binlog_format=ROW # galera只支持InnoDB default_storage_engine=InnoDB # MySQL打开的文件描述符限制,默认最小1024 open_files_limit = 65535 ## see more: https://dev.mysql.com/doc/refman/8.0/en/innodb-auto-increment-handling.html # InnoDB提供了一种可配置的锁定机制,可以显着提高将行添加到带有AUTO_INCREMENT列的表的SQL语句的可伸缩性和性能 # simple insert 可以预先确定要插入行数的语句(最初处理该语句时) # bulk insert 事先不知道要插入行数(以及所需的自动增量值的数目)的语句 # mixed insert 这些是“simple insert”语句,用于指定某些(但不是全部)新行的自动增量值 # 0 traditional 传统锁定,兼容5.1之前,表级AUTO-INC锁定,主从复制时,自增列使用与master相同的值 # 1 consecutive 连续锁定,不同insert不同锁定。主从复制表现跟traditional模式下一样,但是性能会有所提高 # 2 interleaved 交错锁定,主从复制的同一张表下的同一行id有可能不一样 # # 当innodb_autoinc_lock_mode设置为传统锁定模式(即的值0)或连续锁定模式(即的值1)时, # 可能导致无法解决的死锁,并使系统在Galera Cluster中无响应 innodb_autoinc_lock_mode=2 # InnoDB为独立表空间模式,每个数据库的每个表都会生成一个数据空间 # 独立表空间优点: # 1.每个表都有自已独立的表空间。 # 2.每个表的数据和索引都会存在自已的表空间中。 # 3.可以实现单表在不同的数据库中移动。 # 4.空间可以回收(除drop table操作处,表空不能自已回收) # 缺点: # 单表增加过大,如超过100G # 结论: # 共享表空间在Insert操作上少有优势。其它都没独立表空间表现好。当启用独立表空间时,请合理调整:innodb_open_files innodb_file_per_table=1 # InnoDB使用一个缓冲池来保存索引和原始数据, 不像MyISAM. # 这里你设置越大,你在存取表里面数据时所需要的磁盘I/O越少. # 在一个独立使用的数据库服务器上,推荐设置这个变量到服务器物理内存大小的80% # 不要设置过大,否则,由于物理内存的竞争可能导致操作系统的换页颠簸. # 为了补偿Galera Cluster在独立的MySQL数据库服务器上增加的内存使用量,您应该将通常值减少5% # 注意在32位系统上你每个进程可能被限制在 2-3.5G 用户层面内存限制. # 这里是 16G*0.75 = 12G innodb_buffer_pool_size = 12G # redo日志(重做日志)文件的大小 = innodb_log_file_size * innodb_log_files_in_group(默认2), # 配置的Redo空间越大,InnoDB就能更好的优化写操作.也意味着更长的恢复时间 # 每1GB的Redo log的恢复时间大约在5分钟 # 单文件恢复1min # 后期依据此调整 https://blog.csdn.net/langkeziju/article/details/51094289 innodb_log_file_size = 256M ## 为了在InnoDB与事务一起使用的复制设置中具有持久性和一致性,请执行以下操作: # innodb_flush_log_at_trx_commit = sync_binlog =1 # 但是galera 采用写集复制,所以可以允许他=0 or 2,除非所有节点down,否则不丢失 # 0:每秒写入一次日志并将其刷新到磁盘。未刷新日志的事务可能会在崩溃中丢失 # 1:默认值。要完全符合ACID,必须使用1。每次事务提交时,日志都会写入并刷新到磁盘。 # 2:在每次事务提交后写入日志,并每秒刷新一次到磁盘。未刷新日志的事务可能会在崩溃中丢失 innodb_flush_log_at_trx_commit = 0 # 0:默认值。事务提交后,将二进制日志从缓冲写入磁盘,但是不进行刷新操作(fsync),此时只是写入了操作系统缓冲 # 1:事务提交后,将二进制文件写入磁盘并立即执行刷新操作,相当于是同步写入磁盘,不经过操作系统的缓存。 # N:每写N次操作系统缓冲就执行一次刷新操作。 sync_binlog =1 ``` ## 启动数据库 ``` systemctl start mysqld systemctl enable mysqld ``` ## 初始密码 ``` export passwd=`grep 'temporary password' /var/log/mysqld.log | awk '{print $NF}'` echo $passwd ``` ## 修改密码 ``` mysql -uroot -p$passwd mysql > set global validate_password_policy=0; mysql > set global validate_password_length=6; mysql > CREATE USER 'root'@'%' IDENTIFIED BY 'XXXXXXX123'; mysql > set password for root@localhost = password('XXXXXXX123'); mysql > update mysql.user set authentication_string=password('XXXXXXX123') where user='root'; mysql > GRANT all privileges ON *.* TO galera@'%' IDENTIFIED BY 'XXXXXXX123'; mysql > FLUSH PRIVILEGES; mysql > exit ``` ## 启动集群 ``` # 第一个节点需要初始化 /usr/bin/mysqld_bootstrap # 其他节点正常启动 systemctl restart mysqld ``` ## 验证 ``` # 端口 ss -tnlp | egrep '3306|4567' # 进入mysql后验证 show status like 'wsrep_local_state_comment'; show status like 'wsrep_cluster%'; ``` ## 如果失败,查看错误日志 ``` # wsrep_cluster_state_uuid 匹配不上的话 # 清理节点缓存 rm -rf /var/lib/mysql/grastate.dat rm -rf /var/lib/mysql/galera.cache rm -rf /var/lock/subsys/mysql # 强制删除死线程 直接关闭可能无法关闭 killall -9 mysqld && systemctl stop mysqld echo "" > /var/log/mysqld.log systemctl start mysqld # 查看日志 tail -n 300 /var/log/mysqld.log ``` ## 备份 https://galeracluster.com/library/training/tutorials/galera-backup.html 源文档:https://galeracluster.com/library/training/tutorials/index.html
寒烟濡雨
2021年7月8日 14:10
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
关于 MrDoc
觅思文档MrDoc
是
州的先生
开发并开源的在线文档系统,其适合作为个人和小型团队的云笔记、文档和知识库管理工具。
如果觅思文档给你或你的团队带来了帮助,欢迎对作者进行一些打赏捐助,这将有力支持作者持续投入精力更新和维护觅思文档,感谢你的捐助!
>>>捐助鸣谢列表
微信
支付宝
QQ
PayPal
Markdown文件
分享
链接
类型
密码
更新密码