Galera Cluster for MySQL是一套基于同步复制的多主MySQL集群解决方案,使用简单,没有单点故障,可用性高,能很好保证业务不断增长时我们数据的安全和随时的扩展,主要特点:
Galera本质是一个wsrep提供者(provider),运行依赖于wsrep的API接口。Wsrep API定义了一系列应用回调和复制调用库,来实现事务数据库同步写集(writeset)复制以及相似应用。目的在于从应用细节上实现抽象的,隔离的复制。虽然这个接口的主要目标是基于认证的多主复制,但同样适用于异步和同步的主从复制。 使用前十项注意
典型的Galera集群场景 安装MySQL with wsrep patch #先安装依赖库 yum install libaio gcc gcc-c++ boost-devel scons check-devel openssl-devel ln -sf /usr/lib64/libssl.so.10 /usr/lib64/libssl.so.6 ln -sf /usr/lib64/libcrypto.so.10 /usr/lib64/libcrypto.so.6 #下载MySQL with wsrep源码包,目前最新版本是5.5.34-25.9 wget https://launchpad.net/codership-mysql/5.5/5.5.34-25.9/+download/mysql-5.5.34_wsrep_25.9-linux-x86_64.tar.gz tar zxvf mysql-5.5* mv mysql-5.5.34_wsrep_25.9-linux-x86_64 /usr/local/mysql cd /usr/local/mysql/ groupadd mysql useradd -r -g mysql mysql chown -R mysql:mysql . ./scripts/mysql_install_db --no-defaults --datadir=/opt/mysqldb/ --user=mysql chown -R root . chown -R mysql /opt/mysqldb/ echo "export PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile source /etc/profile mysqld_safe --wsrep_cluster_address=gcomm:// >/dev/null &
yum install perl-DBD-MySQL perl-Time-HiRes nc wget http://www.percona.com/redir/downloads/XtraBackup/LATEST/RPM/rhel6/x86_64/percona-xtrabackup-2.1.9-744.rhel6.x86_64.rpm rpm -ivh percona-xtrabackup-2.1.9-744.rhel6.x86_64.rpm 安装Galera复制插件 cd ~ wget https://launchpad.net/galera/3.x/25.3.5/+download/galera-25.3.5-src.tar.gz tar zxvf galera-* cd galera-* scons cp garb/garbd /usr/local/mysql/bin/ cp libgalera_smm.so /usr/local/mysql/lib/plugin/ 初始化配置
mkdir -p /var/lib/mysql
mkdir -p /etc/mysql/conf.d/
chown mysql:mysql /var/lib/mysql
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
/usr/local/mysql/bin/mysqld_safe --wsrep_cluster_address=gcomm:// >/dev/null &
#创建用于同步的帐号,注意替换掉示例值。
mysql -e "SET wsrep_on=OFF; GRANT ALL ON *.* TO tvmining@'%' IDENTIFIED BY 'webmaster.me'";
#修改root帐号密码,注意替换掉示例值。
mysql -e "SET wsrep_on=OFF;GRANT ALL PRIVILEGES ON * . * TO 'root'@'localhost' IDENTIFIED BY 'webmaster.me' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ; "
#关闭MySQL
mysqladmin -uroot -p shutdown
配置节点 wget http://my.downsoft.cn/linux/mysql/galera/my.cnf -o /etc/my.cnf wget http://my.downsoft.cn/linux/mysql/galera/wsrep.cnf -o /etc/mysql/conf.d/wsrep.cnf 配置第一个节点的/etc/mysql/conf.d/wsrep.cnf: #MySQL服务器的ID,必须是唯一的 server-id=101 #galera集群的名字,必须是统一的 wsrep_cluster_name='tvm_galera_cluster' #wsrep节点的ID,必须是唯一的 wsrep_node_name = node1 #集群中的其他节点地址,可以使用主机名或IP wsrep_cluster_address=gcomm://mysqlnode2,mysqlnode3 #本机节点地址,可以使用主机名或IP wsrep_node_address='mysqlnode1' #一个逗号分割的节点串作为状态转移源,比如wsrep_sst_donor=node5,node3, 如果node5可用,用node5,不可用用node3,如果node3不可用,最后的逗号表明让提供商自己选择一个最优的。 wsrep_sst_donor='node3,' #线程数量。参考设置:1.CPU内核数*2以上;2.其它写节点连接总数的1/4. wsrep_slave_threads=16 #xtrabackup使用的用户名密码 wsrep_sst_auth=tvmining:webmaster.me
其他节点,根据实际情况修改对应的ID值。 mysqld_safe --wsrep_cluster_address=gcomm:// >/dev/null & 启动第二个节点的MySQL: mysqld_safe >/dev/null & 依次类推启动其他节点。 通过查看4567 端口确认集群是否启动: netstat -plantu | grep mysqld 查询 galera 插件是否已启用: mysql -e "SHOW status LIKE 'wsrep_ready'" -p mysql -e "SHOW VARIABLES LIKE 'wsrep_cluster_address'" -p 常见错误 140530 0:09:18 [Note] WSREP: Running: 'wsrep_sst_xtrabackup --role 'joiner' --address 'mysqlnode2' --auth 'ssttvm:tvmining@123' --datadir '/opt/mysqldb/' --defaults-file '/etc/my.cnf' --parent '21812'' 140530 0:09:18 [ERROR] WSREP: Failed to read 'ready(责任编辑:IT) |