淘先锋技术网

首页 1 2 3 4 5 6 7
1. 在三个节点上安装MariaDBGalera Cluster
Node1:172.16.2.106
Node2:172.16.2.109
Node3:172.16.2.207
三个节点的服务器都已经安装了64 位的 Centos 5.8
Node1 做为已经数据库数据的服务器,集群启动时node2 node3 要从node1 同步数据

节点启动时的同步有三种方式,要my.cnf 文件中的 wsrep_sst_method 参数进行配置
wsrep_sst_method的参数说明:
   
Method
   
Speed
Blocks   Donor?
Available   on Live Node
Type
Requires   root access to database server?
mysqldump
slow
yes
yes
logical   
donor and joiner
rsync
fastest
yes
no
physical
none
xtrabackup
fast
briefly
no
physical
donor only

rsync在数据同步(SST和IST)的时候,速度最快,但是会锁住提供数据的节点,xtrabackup只会短暂的锁住节点。
我们这次的安装是用rsync 的方式进行同步,galera  官网建议用xtrabackup 方式,对数据库的影响最小,在以后的文档中再对xtrabackup 启动同步的方式做测试


安装 mariadb
 mariadb 官网上下载已经包含 wsrep 模块的源代码包
必须要注册用户才能下载
(人家都已经给我们提供这么好的东西了,让注册就注册一下呗)
我们没有使用最新版本的,而是使用了稳定版,在线上平台的软件的使用中我们也要遵守这个原则

先安装一些在编译码代码过程中必须的软件,
yum install pcre-devel
yum install bison-devel
yum install cmake
添加mariadb  的管理用户

groupadd mysql
useradd -g mysql mysql

tar zxf mariadb-5.5.32.tar.gz
cd mariadb-5.5.32
cmake .-DCMAKE_INSTALL_PREFIX=/usr/local/mariadb \
-DMYSQL_UNIX_ADDR=/usr/local/mariadb/data/mysql.sock\
-DMYSQL_DATADIR=/usr/local/mariadb/data \
-DSYSCONFDIR=/usr/local/mariadb/etc \
-DMYSQL_USER=mysql \
-DMYSQL_TCP_PORT=3306 \
-DWITH_XTRADB_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_EXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DEXTRA_CHARSETS=all \
-DWITH_BIG_TABLES=1 \
-DWITH_DEBUG=0 \
-DWITH_WSREP=1 \
-DWITH_INNODB_DISALLOW_WRITES=1

make && make install

编译的时候要支持 galera  必须要加上

-DWITH_WSREP=1 \
-DWITH_INNODB_DISALLOW_WRITES=1

下面完成maria  的一些初始化
/bin/cp support-files/my-small.cnf/etc/my.conf
/bin/cp support-files/mysql.server/etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig mysqld on

/usr/local/mariadb/scripts/mysql_install_db--user=mysql --basedir=/usr/local/mariadb --datadir=/usr/local/mariadb/data

chown -R  mysql:mysql /usr/local/mariadb/data
service mysqld start
export PATH=$PATH:/usr/local/mariadb/bin
echo 'exportPATH=$PATH:/usr/local/mariadb/bin' >> /etc/profile
source /etc/profile
完成上面的工作之后,服务器已经可以当成一个单独的数据库服务器来使用了
配置 数据库启动时同步所需要的数据库用户名,密码
首先用 service mysqld start  启动数据库
Mysql –u root –p
登录到系统后添加用户
grant usageon *.* to wsrep@’%’ identified by password '123456';
grant allprivileges on *.* to wsrep@’%’;

安装galera
在该网站上下载相应版本的 galera ,要结合你的系统来下载
该软件我们使们rpm 包进行安装
先安装galera 所依赖的软件
yum install boost-devel
yum install check-devel
tar zxvf scons-2.2.0.tar.gz
cd scons-2.2.0
python setup.py install
完成 scons 的安装

rpm 包进行安装galera
rpm –ivhgalera-25.3.5-1.rhel5.x86_64.rpm
软件已经安装完成,这一步我们只要记着会在  /usr/lib64/galera   目录生成一个 libgalera_smm.so  文件就可以,在以后的过程中我们会用到/usr/lib64/galera/libgalera_smm.so
上面的步骤三个服务器都要操作,做上面操作后就已经完成了mariadb galera 安装的基本操作

下面对mariadb 进行集群的配置

Node1:
/etc/my.cnf  [mysqld]  下面增加如下内容
binlog_cache_size = 1M
binlog_format = ROW
default-storage-engine = InnoDB
expire_logs_days = 10
innodb_autoinc_lock_mode = 2
innodb_buffer_pool_size = 300M
innodb_log_files_in_group = 3
innodb_max_dirty_pages_pct = 99
innodb_doublewrite = 1
innodb_file_per_table = 1
innodb_flush_log_at_trx_commit = 2
innodb_lock_wait_timeout = 60
innodb_locks_unsafe_for_binlog = 1
innodb_stats_on_metadata = 0
key_buffer = 256M
wsrep_cluster_address = 'gcomm:// '                                    # 特殊地址,做为启动时被同步数据的服务器使用此配置,如果服务器第二次启动,就要改成集群中其它服务器的地址
wsrep_provider =/usr/lib64/galera/libgalera_smm.so
wsrep_retry_autocommit = 0
wsrep_sst_method = rsync
wsrep_sst_auth = wsrep:123456                                              # 前面的步骤中设置的数据库用户名,密码,在数据库启动过程中同步数据使用
wsrep_provider_options="gcache.size=10G;gcache.page_size=1G"
wsrep_slave_threads=16
wsrep_node_address=172.16.2.106
Node2:

/etc/my.cnf  [mysqld]  下面增加如下内容
binlog_cache_size = 1M
binlog_format = ROW
default-storage-engine = InnoDB
expire_logs_days = 10
innodb_autoinc_lock_mode = 2
innodb_buffer_pool_size = 300M
innodb_log_files_in_group = 3
innodb_max_dirty_pages_pct = 99
innodb_doublewrite = 1
innodb_file_per_table = 1
innodb_flush_log_at_trx_commit = 2
innodb_lock_wait_timeout = 60
innodb_locks_unsafe_for_binlog = 1
innodb_stats_on_metadata = 0
key_buffer = 256M
wsrep_cluster_address = 'gcomm://172.16.2.106,172.16.2.207'
wsrep_provider =/usr/lib64/galera/libgalera_smm.so
wsrep_retry_autocommit = 0
wsrep_sst_method = rsync
wsrep_sst_auth = wsrep:123456                                                        # 前面的步骤中设置的数据库用户名,密码,在数据库启动过程中同步数据使用
wsrep_provider_options="gcache.size=10G;gcache.page_size=1G"
wsrep_slave_threads=16
wsrep_node_address=172.16.2.109
Node3:
/etc/my.cnf  [mysqld]  下面增加如下内容

binlog_cache_size = 1M
binlog_format = ROW
default-storage-engine = InnoDB
expire_logs_days = 10
innodb_autoinc_lock_mode = 2
innodb_buffer_pool_size = 300M
innodb_log_files_in_group = 3
innodb_max_dirty_pages_pct = 99
innodb_doublewrite = 1
innodb_file_per_table = 1
innodb_flush_log_at_trx_commit = 2
innodb_lock_wait_timeout = 60
innodb_locks_unsafe_for_binlog = 1
innodb_stats_on_metadata = 0
key_buffer = 256M
wsrep_cluster_address = 'gcomm://172.16.2.106,172.16.2.109'
wsrep_provider =/usr/lib64/galera/libgalera_smm.so
wsrep_retry_autocommit = 0
wsrep_sst_method = rsync
wsrep_sst_auth = wsrep:123456                                                                # 前面的步骤中设置的数据库用户名,密码,在数据库启动过程中同步数据使用
wsrep_provider_options="gcache.size=10G;gcache.page_size=1G"
wsrep_slave_threads=16
wsrep_node_address=172.16.2.207

完成配置,首先启动节点node1, 然后再启动node2 node3 ,后两个节点的启动没有先后顺序

连到任一节点 新建一数据库- 》建表- 》插入数据,
Create database mariadb DEFAULT CHARACTERSET utf8 COLLATE utf8_general_ci
create table t(name varchar(20));
insert into t values('cheshi');

正常的的话在其它服务器是可以看到数据的

查看数据库的运行状态
Show status like ‘wsrep%’;

集群服务运行正常,收工!!!