centos6.x系統安裝配置mariaDB集羣

系統環境:
Mariadb01 192.168.137.21 node01.com centos-6.x 2.6.32-573.el6.x86_64 selinux=disabled
Mariadb02 192.168.137.22 node02.com centos-6.x 2.6.32-573.el6.x86_64 selinux=disabled
Mariadb03 192.168.137.23 node03.com centos-6.x 2.6.32-573.el6.x86_64 selinux=disabled

第一部分:環境初始化(該部分的內容需在所有服務器上執行):

1、服務器Hosts 解析:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.137.21 node01.com db1
192.168.137.22 node02.com db2
192.168.137.23 node03.com db3

2、mariadb 官方Yum 源配置:
[mariadb]
name = MariaDB
baseurl = https://yum.mariadb.org/10.0/rhel6-amd64/
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

3、安裝系統擴展源:
rpm -ivh http://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm

4、清楚緩存並重構緩存:
yum clean all && yum makecache

5、安裝搭建集羣所需的軟件包:
yum install -y MariaDB-Galera-server MariaDB-client galera perl-Digest-MD5-File perl-Digestrypt-PasswdMD5 perl-MD5 socat vim telnet lsof iotop tree lrzsz

6、創建集羣數據存放、日誌存放及臨時數據存放路徑,並授權創建的目錄爲mysql:
mkdir -p /data/{mysql,tmp,logs} && chown -R mysql:mysql /data/{mysql,tmp,logs}

7、刪除安裝集羣工具初始化時自帶的路徑,並將自定義的路徑連接到初始化路徑下:
rm -rf /var/lib/mysql && ln -s /data/mysql /var/lib/mysql

8、編輯/etc/my.cnf 文件,設置一些優化參數:
[mysqld]
datadir = /data/mysql
socket = /data/mysql/mysql.sock
tmpdir = /data/tmp
slow_query_log_file = /data/mysql/slow-log
port = 3306
log_error = /data/logs/mysqld.log
log-bin = dbs-binlog
log-bin-index = dbs-binlog-index
server_id = 11
max_relay_log_size = 0
read_rnd_buffer_size = 16M
read_buffer_size = 6M
sort_buffer_size = 6M
slave_net_timeout = 5
table_definition_cache = 4096
table_open_cache = 4096
thread_cache_size = 64
thread_stack = 192K
query_cache_limit = 4M
query_cache_min_res_unit = 2k
query_cache_size = 64M
query_cache_type = 1
join_buffer_size = 2M
tmp_table_size = 256M
interactive_timeout = 100
max_connections = 4500
max_connect_errors = 3000
max_allowed_packet = 64M
wait_timeout = 100
key_buffer_size = 256M
myisam_sort_buffer_size = 128M
myisam_repair_threads = 1
bulk_insert_buffer_size = 64M
innodb_buffer_pool_size = 300M
innodb_log_files_in_group = 3
innodb_log_file_size = 512M
innodb_file_per_table = 1
innodb_file_format = Barracuda
innodb_lock_wait_timeout = 15
innodb_flush_log_at_trx_commit = 2
innodb_thread_concurrency = 24
innodb_log_buffer_size = 16M
innodb_max_dirty_pages_pct = 90
innodb_strict_mode = 1
innodb_read_only = 0
binlog_format = ROW
expire_logs_days = 7
relay_log_space_limit = 128m
server_id = 109
sync_binlog = 1
replicate-ignore-db = mysql,information_schema,performance_schema,new_weizuan
slow_query_log = 1
innodb_flush_method = O_DIRECT
[mysqld_safe]
open_files_limit = 65535
[client-server]
!includedir /etc/my.cnf.d

9、初始化:
mysql_install_db --defaults-file=/etc/my.cnf --user=mysql --datadir=/data/mysql

10、啓動mysql 服務並將所有mysql 服務設置爲開機啓動及添加至系統服務:
service mysql start

chkconfig --add mysql && chkconfig mysql on

11、執行 mysql_secure_installation ,加固Mariadb 安全:
mysql_secure_installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none):
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.

Set root password? [Y/n] y
New password: #chekir0214
Re-enter new password: #chekir0214
Password updated successfully!
Reloading privilege tables..
... Success!

By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] y
... Success!

Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] n
... skipping.

By default, MariaDB comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] y

  • Dropping test database...
    ... Success!
  • Removing privileges on test database...
    ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] y
... Success!

Cleaning up...

All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

12、因爲本系列教程是採用xtrabackup ,所以還需要給每臺服務器安裝 percona 官方提供的工具 xtrabackup:
yum install -y http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm

yum install -y percona-xtrabackup

第二部分:集羣配置(該部分都需單獨配置)

node01:

1、給自身及node02、node03 授權數據同步賬戶 sst 登錄:
[root@node01 ~ 21:44:27&&16]#mysql -uroot -pchekir0214 -e "delete from mysql.user where User=''"

[root@node01 ~ 21:45:10&&17]#mysql -uroot -pchekir0214 -e "grant all privileges on . to 'sst'@'localhost' identified by '123456'"

[root@node01 ~ 21:45:51&&21]#mysql -uroot -pchekir0214 -e "grant all privileges on . to 'sst'@'192.168.137.21' identified by '123456'"

[root@node01 ~ 21:45:29&&18]#mysql -uroot -pchekir0214 -e "grant all privileges on . to 'sst'@'192.168.137.22' identified by '123456'"

[root@node01 ~ 21:45:38&&19]#mysql -uroot -pchekir0214 -e "grant all privileges on . to 'sst'@'192.168.137.23' identified by '123456'"

刷新權限:
[root@node01 ~ 21:45:55&&22]#mysql -uroot -pchekir0214 -e "flush privileges"

2、停止mysql 服務:
[root@node01 ~ 21:45:58&&23]#service mysql stop
Shutting down MySQL.. SUCCESS!

3、編輯 /etc/my.cnf.d 目錄下的sever.cnf 文件,配置集羣內容:
[root@node01 ~ 14:11:58&&2]#egrep -v '^$|#' /etc/my.cnf.d/server.cnf
[server]
[mysqld]
[galera]
[embedded]
[mariadb]
[mariadb-10.0]
innodb_autoinc_lock_mode=2
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_name="wsrep_cluster"
wsrep_cluster_address="gcomm://192.168.137.21,192.168.137.22,192.168.137.23"
wsrep_node_name=node01.com
wsrep_node_address=192.168.137.21
wsrep_slave_threads=1
wsrep_certify_nonPK=1
wsrep_max_ws_rows=131072
wsrep_max_ws_size=1073741824
wsrep_debug=0
wsrep_convert_LOCK_to_trx=0
wsrep_retry_autocommit=1
wsrep_auto_increment_control=1
wsrep_drupal_282555_workaround=0
wsrep_causal_reads=0
wsrep_sst_method=xtrabackup
wsrep_sst_auth=sst:123456

4、配置防火牆,允許node02和 node03 訪問本機的3306、4444 及 4567 端口:
[root@node01 ~ 22:07:37&&30]#iptables -I INPUT -p tcp -s 192.168.137.22 -m multiport --dport 3306,4444,4567,4568 -j ACCEPT

[root@node01 ~ 22:15:07&&31]#iptables -I INPUT -p tcp -s 192.168.137.23 -m multiport --dport 3306,4444,4567,4568 -j ACCEPT

同時。保存防火牆配置:
[root@node01 ~ 22:15:15&&33]#service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]

node02:

1、給自身及node01、node03 授權數據同步賬戶 sst 登錄:
[root@node02 ~ 21:44:59&&15]#mysql -uroot -pchekir0214 -e "delete from mysql.user where User=''"

[root@node02 ~ 21:45:12&&16]#mysql -uroot -pchekir0214 -e "grant all privileges on . to 'sst'@'localhost' identified by '123456'"

[root@node02 ~ 21:46:06&&17]#mysql -uroot -pchekir0214 -e "grant all privileges on . to 'sst'@'192.168.137.21' identified by '123456'"

[root@node02 ~ 21:46:13&&18]#mysql -uroot -pchekir0214 -e "grant all privileges on . to 'sst'@'192.168.137.22' identified by '123456'"

[root@node02 ~ 21:46:22&&19]#mysql -uroot -pchekir0214 -e "grant all privileges on . to 'sst'@'192.168.137.23' identified by '123456'"

刷新權限:
[root@node02 ~ 21:46:25&&20]#mysql -uroot -pchekir0214 -e "flush privileges"

2、停止mysql 服務:
[root@node02 ~ 21:46:45&&21]#service mysql stop
Shutting down MySQL.. SUCCESS!

3、編輯 /etc/my.cnf.d 目錄下的sever.cnf 文件,配置集羣內容:
[root@node02 ~ 13:55:09&&4]#egrep -v '^$|#' /etc/my.cnf.d/server.cnf
[server]
[mysqld]
[galera]
[embedded]
[mariadb]
[mariadb-10.0]
innodb_autoinc_lock_mode=2
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_name="wsrep_cluster"
wsrep_cluster_address="gcomm://192.168.137.21,192.168.137.22,192.168.137.23"
wsrep_node_name=node02.com
wsrep_node_address=192.168.137.22
wsrep_slave_threads=1
wsrep_certify_nonPK=1
wsrep_max_ws_rows=131072
wsrep_max_ws_size=1073741824
wsrep_debug=0
wsrep_convert_LOCK_to_trx=0
wsrep_retry_autocommit=1
wsrep_auto_increment_control=1
wsrep_drupal_282555_workaround=0
wsrep_causal_reads=0
wsrep_sst_method=xtrabackup
wsrep_sst_auth=sst:123456

4、配置防火牆,允許node01和 node03 訪問本機的3306、4444 及 4567 端口:
[root@node02 ~ 22:06:43&&31]#iptables -I INPUT -p tcp -s 192.168.137.21 -m multiport --dport 3306,4444,4567,4568 -j ACCEPT

[root@node02 ~ 22:15:51&&32]#iptables -I INPUT -p tcp -s 192.168.137.23 -m multiport --dport 3306,4444,4567,4568 -j ACCEPT

保存配置:
[root@node02 ~ 22:15:58&&34]#service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]

node03:

1、給自身及node01、node02 授權數據同步賬戶 sst 登錄:
[root@node03 ~ 21:44:38&&12]#mysql -uroot -pchekir0214 -e "delete from mysql.user where User=''"

[root@node03 ~ 21:45:11&&13]#mysql -uroot -pchekir0214 -e "grant all privileges on . to 'sst'@'192.168.137.23' identified by '123456'"

[root@node03 ~ 21:46:27&&14]#mysql -uroot -pchekir0214 -e "grant all privileges on . to 'sst'@'localhost' identified by '123456'"

[root@node03 ~ 21:46:32&&15]#mysql -uroot -pchekir0214 -e "grant all privileges on . to 'sst'@'192.168.137.21' identified by '123456'"

[root@node03 ~ 21:46:36&&16]#mysql -uroot -pchekir0214 -e "grant all privileges on . to 'sst'@'192.168.137.22' identified by '123456'"

刷新權限:
[root@node03 ~ 21:46:39&&17]#mysql -uroot -pchekir0214 -e "flush privileges"

2、停止mysql 服務:
root@node03 ~ 21:46:44&&18]#service mysql stop
Shutting down MySQL.. SUCCESS!

3、編輯 /etc/my.cnf.d 目錄下的sever.cnf 文件,配置集羣內容:
[root@node03 ~ 14:20:51&&1]#egrep -v '^$|#' /etc/my.cnf.d/server.cnf
[server]
[mysqld]
[galera]
[embedded]
[mariadb]
[mariadb-10.0]
innodb_autoinc_lock_mode=2
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_name="wsrep_cluster"
wsrep_cluster_address="gcomm://192.168.137.21,192.168.137.22,192.168.137.23"
wsrep_node_name=node03.com
wsrep_node_address=192.168.137.23
wsrep_slave_threads=1
wsrep_certify_nonPK=1
wsrep_max_ws_rows=131072
wsrep_max_ws_size=1073741824
wsrep_debug=0
wsrep_convert_LOCK_to_trx=0
wsrep_retry_autocommit=1
wsrep_auto_increment_control=1
wsrep_drupal_282555_workaround=0
wsrep_causal_reads=0
wsrep_sst_method=xtrabackup
wsrep_sst_auth=sst:123456

4、配置防火牆,允許node01和 node02 訪問本機的3306、4444 及 4567 端口:
[root@node03 ~ 22:15:31&&26]#iptables -I INPUT -p tcp -s 192.168.137.21 -m multiport --dport 3306,4444,4567,4568 -j ACCEPT

[root@node03 ~ 22:09:18&&25]#iptables -I INPUT -p tcp -s 192.168.137.22 -m multiport --dport 3306,4444,4567,4568 -j ACCEPT

保存防火牆配置i:
[root@node03 ~ 22:15:40&&28]#service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]

第三部分:啓動集羣

1、啓動第一臺(注:整個集羣第一次啓動,必須使用參數 --wsrep-new-cluster,否則,第一個節點會啓動失敗)
[root@node01 ~ 22:15:21&&34]#service mysql start --wsrep-new-cluster
Starting MySQL.. SUCCESS!

2、啓動第二個節點: 如果node1防火牆未添加會造成後面節點啓動失敗
[root@node02 ~ 15:32:50&&27]#service mysql start
Starting MySQL...SST in progress, setting sleep higher. SUCCESS!

3、啓動第三個節點:
[root@node03 ~ 15:32:55&&24]#service mysql start
Starting MySQL..SST in progress, setting sleep higher. SUCCESS!

4、啓動完成,驗證集羣:
[root@node01 ~ 15:32:33&&27]#mysql -uroot -pchekir0214 -e 'show status like "%wsrep%"'
+------------------------------+-------------------------------------------------------------+
| Variable_name | Value |
+------------------------------+-------------------------------------------------------------+
| wsrep_local_state_uuid | 8ec37b65-f649-11e5-9b39-3f1a0e9b7936 |
| wsrep_protocol_version | 7 |
| wsrep_last_committed | 0 |
| wsrep_replicated | 0 |
| wsrep_replicated_bytes | 0 |
| wsrep_repl_keys | 0 |
| wsrep_repl_keys_bytes | 0 |
| wsrep_repl_data_bytes | 0 |
| wsrep_repl_other_bytes | 0 |
| wsrep_received | 10 |
| wsrep_received_bytes | 808 |
| wsrep_local_commits | 0 |
| wsrep_local_cert_failures | 0 |
| wsrep_local_replays | 0 |
| wsrep_local_send_queue | 0 |
| wsrep_local_send_queue_max | 1 |
| wsrep_local_send_queue_min | 0 |
| wsrep_local_send_queue_avg | 0.000000 |
| wsrep_local_recv_queue | 0 |
| wsrep_local_recv_queue_max | 2 |
| wsrep_local_recv_queue_min | 0 |
| wsrep_local_recv_queue_avg | 0.100000 |
| wsrep_local_cached_downto | 18446744073709551615 |
| wsrep_flow_control_paused_ns | 0 |
| wsrep_flow_control_paused | 0.000000 |
| wsrep_flow_control_sent | 0 |
| wsrep_flow_control_recv | 0 |
| wsrep_cert_deps_distance | 0.000000 |
| wsrep_apply_oooe | 0.000000 |
| wsrep_apply_oool | 0.000000 |
| wsrep_apply_window | 0.000000 |
| wsrep_commit_oooe | 0.000000 |
| wsrep_commit_oool | 0.000000 |
| wsrep_commit_window | 0.000000 |
| wsrep_local_state | 4 |
| wsrep_local_state_comment | Synced |
| wsrep_cert_index_size | 0 |
| wsrep_causal_reads | 0 |
| wsrep_cert_interval | 0.000000 |
| wsrep_incoming_addresses | 192.168.137.21:3306,192.168.137.22:3306,192.168.137.23:3306 |
| wsrep_evs_delayed | |
| wsrep_evs_evict_list | |
| wsrep_evs_repl_latency | 0/0/0/0/0 |
| wsrep_evs_state | OPERATIONAL |
| wsrep_gcomm_uuid | 8ec2b989-f649-11e5-9fb7-c2cc8e011c39 |
| wsrep_cluster_conf_id | 3 |
| wsrep_cluster_size | 3 |
| wsrep_cluster_state_uuid | 8ec37b65-f649-11e5-9b39-3f1a0e9b7936 |
| wsrep_cluster_status | Primary |
| wsrep_connected | ON |
| wsrep_local_bf_aborts | 0 |
| wsrep_local_index | 0 |
| wsrep_provider_name | Galera |
| wsrep_provider_vendor | Codership Oy <[email protected]> |
| wsrep_provider_version | 25.3.14(r3560) |
| wsrep_ready | ON |
| wsrep_thread_count | 2 |
+------------------------------+-------------------------------------------------------------+

此時可以停止某一個節點再查看,在任意節點建庫再看,在任意節點刪除這個庫再看。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章