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的参数说明:
rsync在数据同步(SST和IST)的时候,速度最快,但是会锁住提供数据的节点,xtrabackup只会短暂的锁住节点。 我们这次的安装是用rsync 的方式进行同步,galera 官网建议用xtrabackup 方式,对数据库的影响最小,在以后的文档中再对xtrabackup 启动同步的方式做测试 安装 mariadb 在 mariadb 官网上下载已经包含 wsrep 模块的源代码包 https://downloads.mariadb.org/interstitial/mariadb-galera-5.5.39/source/mariadb-galera-5.5.39.tar.gz 必须要注册用户才能下载 (人家都已经给我们提供这么好的东西了,让注册就注册一下呗) 我们没有使用最新版本的,而是使用了稳定版,在线上平台的软件的使用中我们也要遵守这个原则 先安装一些在编译码代码过程中必须的软件, 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%’; 集群服务运行正常,收工!!! |