mysql8.0以後的版本,進行多主一從的叢集環境搭建
寫在前面:
網上充滿了關於mysql多主一從的環境搭建,但是大多關於mysql5.6左右的版本,版本較低,最近在使用mysql8.0的時候,發現很多命令已經過時了,不再適用8.0以後的版本,一如之前修改root密碼,常用的授權語句均不在適用,今天在搭建多主一從的時候,發現了同樣的問題,隨記錄下來,防止遺忘
一、思路:
顧名思義,多主一從,具有多臺master主機,只有一臺slave主機
也就是隻用一臺slave主機來備份多臺master主機的資料庫資料
方法:兩臺master主機均開啟bin-log日誌,新增不同的server-id號,均授權replicate slave許可權
具體可以參考之前的一主一從的搭建過程,有詳細記錄
slave主機,需要修改MySQL配置檔案,開啟Multi功能支援多執行緒MySQL執行
二、配置:
兩臺master配置不在贅述,可以參考
https://blog.51cto.com/ahcwy/1940177
著重介紹,mysql8.0以後slave與以往的不同
配置檔案:開啟Multi功能支援多執行緒MySQL執行,新增兩個執行緒的資料庫不同埠號,資料庫資料的存放目錄,datadir、pid-file、socket兩個執行緒的配置均在不同目錄下mysqla和mysqlb裡面,伺服器的server-id要一樣
[root@localhost etc]# cat my.cnf
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/8.0/en/server-configuration-defaults.html
[mysqld]
#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove the leading "# " to disable binary logging
# Binary logging captures changes between backups and is enabled by
# default. It's default setting is log_bin=binlog
# disable_log_bin
#
# 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
#
# Remove leading # to revert to previous value for default_authentication_plugin,
# this will increase compatibility with older clients. For background, see:
# https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_default_authentication_plugin
# default-authentication-plugin=mysql_native_password
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
[mysqld_muliti]
mysqld=/usr/bin/mysqld_safe
mysqladmin=/usr/bin/mysqladmin
user=root
password=123456
[mysqld178]
port=3306
datadir=/var/lib/mysqla
pid-file=/var/lib/mysqla/mysqld.pid
socket=/var/lib/mysqla/mysql.sock
user=mysql
server-id=3
[mysqld179]
port=3307
datadir=/var/lib/mysqlb
pid-file=/var/lib/mysqlb/mysqld.pid
socket=/var/lib/mysqlb/mysql.sock
user=mysql
server-id=3
借圖一用,進行解釋:
配置完了,需要初始化資料庫,生成目錄mysqla和mysqlb
重點來了,下面的語句不再生效,已經不識別了 mysql_install_db ,已經在/usr/bin/下面找不到該命令了
最新8.0已經改為了 mysqld --initialize命令,效果如下:
[root@localhost etc]# mysqld --initialize --datadir=/var/lib/mysqla --user=mysql
[root@localhost etc]# mysqld --initialize --datadir=/var/lib/mysqlb --user=mysql
[root@localhost etc]# cd /var/lib/mysqla/
[root@localhost mysqla]# ll
total 155712
-rw-r-----. 1 root root 56 Jun 16 06:57 auto.cnf
-rw-------. 1 root root 1676 Jun 16 06:57 ca-key.pem
-rw-r--r--. 1 root root 1112 Jun 16 06:57 ca.pem
-rw-r--r--. 1 root root 1112 Jun 16 06:57 client-cert.pem
-rw-------. 1 root root 1676 Jun 16 06:57 client-key.pem
-rw-r-----. 1 root root 5750 Jun 16 06:57 ib_buffer_pool
-rw-r-----. 1 root root 12582912 Jun 16 06:57 ibdata1
-rw-r-----. 1 root root 50331648 Jun 16 06:57 ib_logfile0
-rw-r-----. 1 root root 50331648 Jun 16 06:57 ib_logfile1
drwxr-x---. 2 root root 4096 Jun 16 06:57 #innodb_temp
drwxr-x---. 2 root root 4096 Jun 16 06:57 mysql
-rw-r-----. 1 root root 25165824 Jun 16 06:57 mysql.ibd
drwxr-x---. 2 root root 4096 Jun 16 06:57 performance_schema
-rw-------. 1 root root 1680 Jun 16 06:57 private_key.pem
-rw-r--r--. 1 root root 452 Jun 16 06:57 public_key.pem
-rw-r--r--. 1 root root 1112 Jun 16 06:57 server-cert.pem
-rw-------. 1 root root 1680 Jun 16 06:57 server-key.pem
drwxr-x---. 2 root root 4096 Jun 16 06:57 sys
-rw-r-----. 1 root root 10485760 Jun 16 06:57 undo_001
-rw-r-----. 1 root root 10485760 Jun 16 06:57 undo_002
[root@localhost mysqla]#
[root@localhost mysqla]# cd /var/lib/mysqlb/
[root@localhost mysqlb]# ll
total 155712
-rw-r-----. 1 mysql mysql 56 Jun 16 06:58 auto.cnf
-rw-------. 1 mysql mysql 1676 Jun 16 06:58 ca-key.pem
-rw-r--r--. 1 mysql mysql 1112 Jun 16 06:58 ca.pem
-rw-r--r--. 1 mysql mysql 1112 Jun 16 06:58 client-cert.pem
-rw-------. 1 mysql mysql 1676 Jun 16 06:58 client-key.pem
-rw-r-----. 1 mysql mysql 5750 Jun 16 06:58 ib_buffer_pool
-rw-r-----. 1 mysql mysql 12582912 Jun 16 06:58 ibdata1
-rw-r-----. 1 mysql mysql 50331648 Jun 16 06:58 ib_logfile0
-rw-r-----. 1 mysql mysql 50331648 Jun 16 06:58 ib_logfile1
drwxr-x---. 2 mysql mysql 4096 Jun 16 06:58 #innodb_temp
drwxr-x---. 2 mysql mysql 4096 Jun 16 06:58 mysql
-rw-r-----. 1 mysql mysql 25165824 Jun 16 06:58 mysql.ibd
drwxr-x---. 2 mysql mysql 4096 Jun 16 06:58 performance_schema
-rw-------. 1 mysql mysql 1680 Jun 16 06:58 private_key.pem
-rw-r--r--. 1 mysql mysql 452 Jun 16 06:58 public_key.pem
-rw-r--r--. 1 mysql mysql 1112 Jun 16 06:58 server-cert.pem
-rw-------. 1 mysql mysql 1676 Jun 16 06:58 server-key.pem
drwxr-x---. 2 mysql mysql 4096 Jun 16 06:58 sys
-rw-r-----. 1 mysql mysql 10485760 Jun 16 06:58 undo_001
-rw-r-----. 1 mysql mysql 10485760 Jun 16 06:58 undo_002
改變mysqla和mysqlb目錄及以下的檔案屬主為mysql(防止出現許可權問題)
[root@localhost lib]# chown -R mysql:mysql mysqla
啟動服務:(1,2是兩臺master主機的server-id號)
[root@localhost lib]# mysqld_multi --defaults-file=/etc/my.cnf start 1
[root@localhost lib]# mysqld_multi --defaults-file=/etc/my.cnf start 2
檢視埠,觀察服務是否啟動成功
相關文章
- 基於docker環境下搭建redis主從叢集DockerRedis
- linux虛擬機器環境快速搭建redis5.x版本的主從叢集總結Linux虛擬機Redis
- CentOS 7.9 環境下搭建k8s叢集(一主兩從)CentOSK8S
- 【環境搭建】RocketMQ叢集搭建MQ
- Zookeeper 叢集環境搭建
- Mac 環境下 Redis 叢集的搭建MacRedis
- Mysql雙主雙從高可用叢集的搭建且與MyCat進行整合MySql
- MySQL叢集之 主從複製 主主複製 一主多從 多主一叢 實現方式MySql
- es 5.5.3叢集環境搭建
- Redis主從同步叢集搭建Redis主從同步
- 基於Dokcer搭建Redis叢集(主從叢集)Redis
- Redis叢集環境搭建實踐Redis
- 12. Redis叢集環境搭建Redis
- Ubuntu上搭建Hadoop叢集環境的步驟UbuntuHadoop
- Redis叢集搭建(三主三從)Redis
- Redis叢集搭建 三主三從Redis
- RocketMQ雙主雙從叢集搭建MQ
- k8s——搭建叢集環境K8S
- 高可用叢集環境搭建-留檔
- Redis搭建主從複製、哨兵叢集Redis
- MySQL8.0 高可用叢集化 · mysql-shell · mysql-router · docker · 單主多從MySqlDocker
- ZooKeeper 系列(二)—— Zookeeper單機環境和叢集環境搭建
- kubeadm部署一主兩從的kubernetes叢集
- RocketMQ 4.7.1 環境搭建、叢集、MQ整合SpringBootMQSpring Boot
- Windows 10環境簡單搭建ELK叢集Windows
- Hadoop叢集之 ZooKeeper和Hbase環境搭建Hadoop
- MySQL8.0的MGR多主搭建與測試MySql
- RocketMQ4.7.1雙主雙從叢集搭建MQ
- Docker Compose搭建MySQL主從複製叢集DockerMySql
- 搭建eureka叢集環境以及客戶端配置客戶端
- Elasticsearch叢集搭建教程及生產環境配置Elasticsearch
- Hadoop框架:叢集模式下分散式環境搭建Hadoop框架模式分散式
- Linux 環境下搭建Hadoop叢集(全分佈)LinuxHadoop
- 在Docker下進行MyCAT管理雙主雙從MySQL叢集DockerMySql
- 使用ansible搭建python多版本開發環境Python開發環境
- linux系統——Redis叢集搭建(主從+哨兵模式)LinuxRedis模式
- Hadoop的叢集環境部署說明Hadoop
- 學習CDH叢集環境的搭建(虛擬機器可演示)虛擬機