系统环境:
CentOS7 64位
MariaDB版本:
MariaDB-Galera-server10.0.14
特点:
多主机数据同步复制 每个node节点都是主服务器,每个node都有全部数据. 每个节点都可以提供写和读 数据复制只支持InnoDB引擎. 所有node节点同步数据通过wsrep接口 每个节点下线后,自动从集群中下线
主机规划:
192.168.0.233 client233 192.168.0.234 client234 192.168.0.235 client235
三台主机安装之前,必须先设置selinux 、hostname 和 iptables; 如下:
(1)selinux=Disabled (2)systemctl stop iptables systemctl disables iptables iptables -F service iptables save (3)vi /etc/hosts 192.168.0.233 client233 192.168.0.234 client234 192.168.0.235 client235 (4)reboot
开始部署:
1.mariadb的64位yum源
vi /etc/yum.repo.d/mariadb.repo
[mariadb] name = MariaDB baseurl = http://yum.mariadb.org/10.0.14/centos7-amd64/ enabled = 1 gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck=1
yum makecache
2. 开始安装
yum install MariaDB-Galera-server MariaDB-client galera
安装完后,查看/etc/my.cnf.d/下的文件是否为如下:
mariadb-client.conf server.conf tokudb.conf
3. 在三台主机上初始化mariadb,并且创建集群账户。
All nodes:
初始化如下: service mysql start mysql_secure_installation #提示创建密码,root是否远程登录,删除test数据库。 授权账户如下: mysql -p GRANT ALL PRIVILEGES ON *.* TO 'cp'@'%' IDENTIFIED BY 'xxx123' WITH GRANT OPTION; flush privileges; quit 然后停止All Nodes的数据。 service mysql stop vi /etc/my.cnf.d/server.conf 在【mariadb】模块中添加: [mariadb] query_cache_size=0 binlog_format=ROW default_storage_engine=innodb innodb_autoinc_lock_mode=2 wsrep_provider=/usr/lib64/galera/libgalera_smm.so wsrep_cluster_address=gcomm://192.168.0.234,192.168.0.235 wsrep_cluster_name='cp' wsrep_node_address='192.168.0.233' wsrep_node_name='client233' wsrep_sst_method=rsync wsrep_sst_auth=cp:xxx123 保存退出后,执行 /etc/init.d/mysql bootstrap 结果报如下 [ERROR] WSREP: gcs/src/gcs_core.c:gcs_core_open():202: Failed to open backend connection: -13 (Permission denied) 错误,最后查了半天资料,原来还是防火墙的原因。于是: iptables -F 或者 iptables -A INPUT -i eth0 -p tcp --dport 3306 -j ACCEPT iptables -A INPUT -i eth0 -p tcp --dport 4567 -j ACCEPT 最后再重新: /etc/init.d/mysql bootstrap [mariadb] query_cache_size=0 binlog_format=ROW default_storage_engine=innodb innodb_autoinc_lock_mode=2 wsrep_provider=/usr/lib64/galera/libgalera_smm.so wsrep_cluster_address=gcomm://192.168.0.233,192.168.0.235 wsrep_cluster_name='cp' wsrep_node_address='192.168.0.234' wsrep_node_name='client234' wsrep_sst_method=rsync wsrep_sst_auth=cp:xxx123 然后: iptables -F 或者 iptables -A INPUT -i eth0 -p tcp --dport 3306 -j ACCEPT iptables -A INPUT -i eth0 -p tcp --dport 4567 -j ACCEPT 最后, /etc/init.d/mysql start [mariadb] query_cache_size=0 binlog_format=ROW default_storage_engine=innodb innodb_autoinc_lock_mode=2 wsrep_provider=/usr/lib64/galera/libgalera_smm.so wsrep_cluster_address=gcomm://192.168.0.233,192.168.0.234 wsrep_cluster_name='cp' wsrep_node_address='192.168.0.235' wsrep_node_name='client235' wsrep_sst_method=rsync wsrep_sst_auth=cp:xxx123 然后: iptables -F 或者 iptables -A INPUT -i eth0 -p tcp --dport 3306 -j ACCEPT iptables -A INPUT -i eth0 -p tcp --dport 4567 -j ACCEPT 最后, /etc/init.d/mysql start vi /etc/my.cnf.d/server.cnf [mariadb-10.0]添加: port = 3306 tmpdir = /tmp skip-external-locking skip-name-resolve default-storage-engine = INNODB max_connections=3600 innodb_flush_log_at_trx_commit=2 innodb_log_file_size=100m innodb_log_files_in_group=5 thread_concurrency=24 innodb_thread_concurrency=24 innodb_commit_concurrency=24 max_connections=3600 innodb_flush_log_at_trx_commit=2 innodb_log_file_size=100m innodb_log_files_in_group=5 thread_concurrency=24 innodb_thread_concurrency=24 innodb_commit_concurrency=24 character-set-server = utf8 collation-server = utf8_general_ci event_scheduler = ON max_allowed_packet = 20M