2018-04-26 centos7 系统MariaDB Galera Cluster多主集群搭建

安全提示:如果需要打开防火墙,需要开放防火墙端口:3306, 4444, 4567, 4568 或者对指定ip允许访问

机器列表

192.168.124.137
192.168.124.139

所有机器操作:

关闭SELINUX

vi /etc/selinux/config
SELINUX=disabled 

setenforce 0

关闭防火墙

systemctl stop firewalld.service
systemctl disable firewalld.service

设置mariadb的yum源并安装(所有节点都要

vi /etc/yum.repos.d/mariadb.repo

[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
enabled=0
yum install MariaDB-server MariaDB-client galera

数据库配置:

# 配置数据库密码,测试情况使用 root  % 123456
/usr/bin/mysql_secure_installation

grant all privileges on *.* to root@"%" identified by "123456";
flush privileges;

# 配置完成之后关闭数据库
systemctl stop mariadb

配置节点:
192.168.124.137 cat /etc/my.cnf.d/server.cnf | grep -v '#' :

[server]

[mysqld]

[galera]
wsrep_on=ON
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_address="gcomm://192.168.124.137,192.168.124.139"
wsrep_node_name = mariadb_cluster_1
binlog_format=row
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
bind-address=0.0.0.0

wsrep_cluster_name="MariaDB_Cluster"
wsrep_node_address=192.168.124.137
wsrep_sst_method=rsync

wsrep_slave_threads=1
innodb_flush_log_at_trx_commit=2
innodb_buffer_pool_size=1024M
wsrep_sst_auth=root:123456

[embedded]

[mariadb]

[mariadb-10.1]

192.168.124.139 配置 cat /etc/my.cnf.d/server.cnf | grep -v '#' :

[server]

[mysqld]

[galera]
wsrep_on=ON
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_address="gcomm://192.168.124.137,192.168.124.139"
wsrep_node_name = mariadb_cluster_2
binlog_format=row
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
bind-address=0.0.0.0

wsrep_cluster_name="MariaDB_Cluster"
wsrep_node_address=192.168.124.139
wsrep_sst_method=rsync
wsrep_sst_auth=root:123456

wsrep_slave_threads=1
innodb_flush_log_at_trx_commit=2
innodb_buffer_pool_size=1024M

[embedded]

[mariadb]

[mariadb-10.1]

启动 192.168.124.137:

/usr/sbin/mysqld --wsrep-new-cluster --user=root

查看集群状态:

MariaDB [(none)]> show  status like "wsrep_cluster_size"; 
+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| wsrep_cluster_size | 1     |
+--------------------+-------+
1 row in set (0.00 sec)

打开 192.168.124.139 上面的mariadb:

systemctl start mariadb
MariaDB [(none)]> show  status like "wsrep_cluster_size"; 
+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| wsrep_cluster_size | 2     |
+--------------------+-------+
1 row in set (0.00 sec)

集群大小已经发生变化了,数据库被可以使用了,下面进行数据写入测试 192.168.:

MariaDB [(none)]> create database qinfei;
Query OK, 1 row affected (0.01 sec)

MariaDB [(none)]> use qinfei;
Database changed
MariaDB [qinfei]> create table ha;
ERROR 1113 (42000): A table must have at least 1 column
MariaDB [qinfei]> create table ha(id int primary key);
Query OK, 0 rows affected (0.01 sec)

MariaDB [qinfei]> show tables;
+------------------+
| Tables_in_qinfei |
+------------------+
| ha               |
+------------------+
1 row in set (0.00 sec)

MariaDB [qinfei]> insert into ha value(1);
Query OK, 1 row affected (0.00 sec)

MariaDB [qinfei]> insert into ha value(2);
Query OK, 1 row affected (0.00 sec)

MariaDB [qinfei]> select * from ha;
+----+
| id |
+----+
|  1 |
|  2 |
+----+
2 rows in set (0.00 sec)

查看从数据库:

MariaDB [(none)]> show databases;;
+--------------------+
| Database           |
+--------------------+
| galera             |
| information_schema |
| mysql              |
| performance_schema |
| qinfei             |
+--------------------+
5 rows in set (0.00 sec)

ERROR: No query specified

MariaDB [(none)]> use qinfei;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
MariaDB [qinfei]> select * from ha;
+----+
| id |
+----+
|  1 |
|  2 |
+----+
2 rows in set (0.00 sec)

数据已经同步。

现在在另一个数据库192.168.124.139上面操作:

MariaDB [qinfei]> insert into ha value(88);
Query OK, 1 row affected (0.01 sec)

查看192.168.124.137:

MariaDB [qinfei]> select * from ha;
+----+
| id |
+----+
|  1 |
|  2 |
| 88 |
+----+
3 rows in set (0.00 sec)

数据完全同步,数据库集群可以正常使用。
停掉一个数据库之后一样可以正常使用。

遇见的问题1 :

2018-04-26  3:59:56 140697295214848 [ERROR] WSREP: It may not be safe to bootstrap the cluster from this node. It was not the last one to leave the cluster and may not contain all the updates. To force cluster bootstrap with this node, edit the grastate.dat file manually and set safe_to_bootstrap to 1 .
2018-04-26  3:59:56 140697295214848 [ERROR] WSREP: wsrep::connect(gcomm://192.168.124.137,192.168.124.139) failed: 7
2018-04-26  3:59:56 140697295214848 [ERROR] Aborting

解决方案: 按照建议方式修改 vi /var/lib/mysql/grastate.dat

safe_to_bootstrap: 1

可以正常启动。

遇见的问题2:

[ERROR] Can't init tc log
[ERROR] Aborting

tc.log 文件有问题,调试环境直接删除文件捷克解决问题:

cd /var/lib/mysql/
rm -f ib_logfile*  
rm -f tc.log  
rm -f localhost.pid

最严重的问题:由于是日志同步 rsync ,每次停止实例都很可能会导致mysql 启动失败,很坑,不是一般的坑.

遇见的问题3: 备点加入集群一直失败
原因:在生产环境中必须打开防火墙,但是我只开放了 4567 和 针对指定ip开放3306 端口,导致加入集群失败,需要开放 3306, 4444, 4567, 4568 四个端口才可以正常启动

遇见问题4:

 Log file ./ib_logfile1 is of different size 5242880 bytes than other log files 27787264 bytes!
[ERROR] Plugin 'InnoDB' init function returned error.
[ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
[Note] Plugin 'FEEDBACK' is disabled.
[ERROR] Unknown/unsupported storage engine: InnoDB
[ERROR] Aborting'

解决办法:

  • 1、修改配置文件

    在[mysqld]下添加:

    innodb_log_file_size=50331648

  • 2、删除ib_logfile文件

    mv ib_logfile0 ib_logfile0_bak

    mv ib_logfile1 ib_logfile1_bak

遇见问题5:

pam_unix(su-l:session): session opened for user root by (uid=0)
pam_unix(su-l:session): session closed for user root
[b7929b] <passwd=-1> ldap_result() failed: Can't contact LDAP server: Connection reset by peer
[b7929b] <passwd=-1> ldap_abandon() failed to abandon search: Can't contact LDAP server: Transport endpoint is not connected
(to root) root on none
Started Session c127 of user root.

遇见这个问题,我只想说一句 Fuck 道行太浅啊!!!解决办法:

sudo systemctl start mariadb.service

启动顺序

方法1:

必须先:

/usr/sbin/mysqld --wsrep-new-cluster --user=root

才可以使用 systemctl 命令启动从节点。

方法2:

第一个需要启动的节点配置文件这样填写:

wsrep_cluster_address="gcomm://"

不指定集群地址,这样就可以使用 systemctl start mariadb.service

注意事项:这个非常非常重要 在停机维护的时候,必须最后一个停止主节点,否则主节点会启动失败,然后只能启动最后一个关闭的节点作为此次启动的主节点。

http://blog.51cto.com/xianglinhu/1676039 写道:

其中需要注意的地方有wsrep_cluster_address=gcomm://这条命令,gcomm://是一个特殊的参数,在启动第一台数据库时需要使用这个参数来启动,否则会启动失败,后面的节点使用wsrep_cluster_address="gcomm://192.168.1.162,192.168.1.163,192.168.1.164"这个参数来启动数据库。当第一台数据库需要重启时需要切换到wsrep_cluster_address="gcomm://192.168.1.162,192.168.1.163,192.168.1.164"这个参数来启动才能加入到集群中。这样讲有点抽象,换一种方式来讲就是最开始启动集群的第一台服务器时将wsrep_cluster_address="gcomm://192.168.1.162,192.168.1.163,192.168.1.164"这一行注释掉,使用下面那个参数来启动,后面的节点注释掉wsrep_cluster_address=gcomm://这个参数启动数据库,加入到集群中来。当集群全部起来以后万一第一台数据库要重启时将下面那条参数注释掉,开启上面那条参数。这样就能加入集群中来。至于wsrep_sst_auth=wsrep_sst-user:password这个参数就是我们之前设定的用来同步的用户名和密码。

实际运行发现的问题:


mysql_celery.png

上图的应用场景是celery 做分布式任务,并写入到mysql中,中间停顿前面部分是启用双活数据库之前的执行速度,后面部分是mysql 单点执行速度,大致可以看出运行时间大概延长了一倍,是不是可以得出这样的结论:双活数据库写入吞吐量降低了呢?尚未测试,待闲来测一下吧

优缺点:http://blog.sina.com.cn/s/blog_548c8a830102vrgw.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,470评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,393评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,577评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,176评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,189评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,155评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,041评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,903评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,319评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,539评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,703评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,417评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,013评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,664评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,818评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,711评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,601评论 2 353

推荐阅读更多精彩内容