MariaDB Galera 集群复制






4.18/5 (3投票s)
一个使用 MariaDB 的非常简单的复制集群
引言
高可用性对于电子商务、Web 服务等至关重要。通过这个简单的复制集群,我们可以构建一个非常有用的数据库服务器。
安装 MariaDB 和 Galera
MariaDB 复制集群需要两个或多个节点/服务器,我们将使用 Ubuntu server 12.04 作为节点的操作系统。 在这种情况下,我将使用 3 个节点(Server1
、Server2
和 Server3
)设置复制集群,每个节点都有一个网络接口,分别具有以下 IP 地址:192.168.198.130、192.168.198.131 和 192.168.198.132。
Ubuntu 12.04 不包含 MariaDB 仓库,因此我们需要手动添加它们并导入仓库的密钥。
apt-get install python-software-properties
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db
add-apt-repository ’deb http://mirror3.layerjet.com/mariadb/repo/5.5/ubuntu precise main’
apt-get update
然后,安装以下软件包
rsync
galera
mariadb-galera-server
sudo apt-get install rsync mariadb-galera-server galera
配置 Galera
需要为 galera 集群创建一个配置文件。 它包含 MariaDB 和 Galera 的配置(Galera 配置变量以 wsrep_
开头)。 在此文件中,wsrep_cluster_address
变量将存储允许加入集群的每个节点的 IP 地址。
该文件应在 /etc/mysql/conf.d/ 中创建,并命名为 galera.cnf。 将此文件复制到集群中的所有节点。
#/etc/mysql/conf.d/galera.cnf
[mysqld]
#mysql settings
binlog_format=ROW
default-storage-engine=innodb
innodb_autoinc_lock_mode=2
query_cache_size=0
query_cache_type=0
bind-address=0.0.0.0
#galera settings
wsrep_provider=/usr/lib/galera/libgalera_smm.so
wsrep_cluster_name="cluster_db"
wsrep_cluster_address="gcomm://192.168.198.130,192.168.198.131,192.168.198.132"
wsrep_sst_method=rsync
wsrep_sst_method
变量设置所有节点之间的同步方法,rsync
是最简单的方法,不需要凭据。
选择一个节点并在 /etc/mysql/debian.cnf 中打开文件,文件应如下所示
[client]
host = localhost
user = debian-sys-maint
password = 03P8rdlknkXr1upf
socket = /var/run/mysqld/mysqld.sock
[mysql_upgrade]
host = localhost
user = debian-sys-maint
password = 03P8rdlknkXr1upf
socket = /var/run/mysqld/mysqld.sock
basedir = /usr
将其(在同一位置)复制到集群中的所有节点,然后停止每个节点上的 mysql 服务。
Server1#: sudo service mysql stop
Server2#: sudo service mysql stop
Server3#: sudo service mysql stop
运行 Galera
在一个节点上启动 mysql 服务并添加用于新集群的参数
Server1#: service mysql start --wsrep-new-cluster
新的集群应该正在运行,其中包含一个节点,使用以下查询检查 wsrep_cluster_size
变量
Server1#: mysql -u root -e ’SELECT VARIABLE_VALUE as "cluster size"
FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME="wsrep_cluster_size"’
+--------------+
| cluster size |
+--------------+
| 1 |
+--------------+
在其他节点上,只需正常启动 mysql 服务
Server2#: service mysql start
Server3#: service mysql start
您可以使用几行上面的 SQL 查询在任何节点上检查集群的大小。
关注点
MariaDB galera 集群目前仅在 Linux 上可用。
wsrep_provider
库由 galera 包安装。
更多信息请访问 https://mariadb.com/kb/en/what-is-mariadb-galera-cluster/。