centos6.5系统编译安装mariadb以及实现主从复制

时间:2022-09-15 10:57:06

*关于MariaDB的介绍:

  MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可。开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险。

  MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。在存储引擎方面,10.0.9版起使用XtraDB(名称代号为Aria)来代替MySQL的InnoDB

  1. 创建mysql普通账号,设置数据库存储数据的目录,设置权限。

[root@DB ~]# groupadd -r mysql
[root@DB ~]# useradd -r -g mysql -s /sbin/nologin mysql
[root@DB ~]# mkdir -p /data/mydata
[root@DB ~]#  chown -R mysql:mysql /data

2.安装一下数据库依赖的一些软件包。

yum install -y gcc gcc-c++ make cmake ncurses ncurses libxml2 libxml2-devel openssl-devel bison bison-devel ncurses-devel

3.下载Mariadb源码包,解压,编译,安装。

[root@DB ~]# mkdir -p /taokey/tools[root@DB ~]# cd /taokey/tools/[root@DB tools]# wget http://mirrors.opencas.cn/mariadb/mariadb-galera-10.0.17/source/mariadb-galera-10.0.17.tar.gz[root@DB tools]# tar -zxf mariadb-galera-10.0.17.tar.gz[root@DB tools]# cd mariadb-10.0.17/[root@DB mariadb-10.0.17]# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mydata -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STPRAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWIYH_READLINE=1 -DWIYH_SSL=system -DVITH_ZLIB=system -DWITH_LOBWRAP=0 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci[root@DB mariadb-10.0.17]# make && make install

4.拷贝数据库启动脚本到/etc/rc.d/init.d/mysqld目录下,修改/etc/my.cnf配置文件。

[root@DB mariadb-10.0.17]# cd /usr/local/mysql/[root@DB mysql]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld[root@DB mysql]# chmod +x /etc/rc.d/init.d/mysqld[root@DB mysql]# cp support-files/my-large.cnf /etc/my.cnf cp: overwrite `/etc/my.cnf'? yes[root@DB mysql]# vim /etc/my.cnf +42datadir = /data/mydata

5.初始化数据库,启动数据库。

[root@DB mysql]# scripts/mysql_install_db --user=mysql --datadir=/data/mydata/[root@DB mysql]# service mysqld startStarting MySQL.. SUCCESS!

6.设置数据库的系统变量。

[root@DB mysql]# cat /etc/profile.d/mysqld.sh export PATH=$PATH:/usr/local/mysql/bin[root@DB mysql]# source /etc/profile.d/mysqld.sh[root@DB mysql]# mysqlWelcome to the MariaDB monitor.  Commands end with ; or \g.Your MariaDB connection id is 6Server version: 10.0.17-MariaDB-wsrep-log Source distribution, wsrep_25.10.r4144Copyright (c) 2000, 2015, Oracle, MariaDB Corporation Ab and others.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.MariaDB [(none)]>

mariaDB主从复制:

1.实验环境:

服务器版本:

CentOS 6.5 x86_64

数据库版本:

mariadb-10.0.17

服务器主机名、IP地址:

db_master  192.168.3.113

db_slave   192.168.3.114

安装MariaDB数据库,请参照上文。

2.修改db_master上的my.cnf配置文件如下:

[root@db_master ~]# cat /etc/my.cnf[client]port = 3306socket = /tmp/mysql.sock[mysqld]port = 3306socket = /tmp/mysql.sockskip-external-lockingkey_buffer_size = 256Mmax_allowed_packet = 1Mtable_open_cache = 256sort_buffer_size = 1Mread_buffer_size = 1Mread_rnd_buffer_size = 4Mmyisam_sort_buffer_size = 64Mthread_cache_size = 8query_cache_size= 16Mthread_concurrency = 8datadir = /data/mydatalog-bin=mysql-binbinlog_format=mixedserver-id = 1[mysqldump]quickmax_allowed_packet = 16M[mysql]no-auto-rehash[myisamchk]key_buffer_size = 128Msort_buffer_size = 128Mread_buffer = 2Mwrite_buffer = 2M[mysqlhotcopy]interactive-timeout

修改db_slave上的my.cnf配置文件如下:

[root@db_slave mysql]# cat /etc/my.cnf[client]port = 3306socket = /tmp/mysql.sock[mysqld]port = 3306socket = /tmp/mysql.sockskip-external-lockingkey_buffer_size = 256Mmax_allowed_packet = 1Mtable_open_cache = 256sort_buffer_size = 1Mread_buffer_size = 1Mread_rnd_buffer_size = 4Mmyisam_sort_buffer_size = 64Mthread_cache_size = 8query_cache_size= 16Mthread_concurrency = 8datadir = /data/mydatalog-bin=mysql-binbinlog_format=mixedserver-id = 2[mysqldump]quickmax_allowed_packet = 16M[mysql]no-auto-rehash[myisamchk]key_buffer_size = 128Msort_buffer_size = 128Mread_buffer = 2Mwrite_buffer = 2M[mysqlhotcopy]interactive-timeout

3.在db_master上,创建复制用户和密码,设置相应权限,刷新权限表。

MariaDB [(none)]> grant replication client,replication slave on *.* to 'taokey'@'192.168.3.%' identified by '123.com';Query OK, 0 rows affected (0.00 sec)MariaDB [(none)]> FLUSH PRIVILEGES;Query OK, 0 rows affected (0.00 sec)MariaDB [(none)]> show master status;+------------------+----------+--------------+------------------+| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |+------------------+----------+--------------+------------------+| mysql-bin.000004 |      651 |              |                  |+------------------+----------+--------------+------------------+1 row in set (0.00 sec)

4.在db_slave上,使用change命令导入数据,启动slave,然后查看slave状态。

MariaDB [(none)]> change master to master_host='192.168.3.113',master_user='taokey',master_password='123.com',master_log_file='mysql-bin.000004',master_log_pos=651,master_connect_retry=5,master_heartbeat_period=2;Query OK, 0 rows affected (0.09 sec)MariaDB [(none)]> start slave;Query OK, 0 rows affected (0.07 sec)MariaDB [(none)]> show slave status\G*************************** 1. row ***************************               Slave_IO_State: Waiting for master to send event                  Master_Host: 192.168.3.113                  Master_User: taokey                  Master_Port: 3306                Connect_Retry: 5              Master_Log_File: mysql-bin.000004          Read_Master_Log_Pos: 651               Relay_Log_File: db_slave-relay-bin.000002                Relay_Log_Pos: 535        Relay_Master_Log_File: mysql-bin.000004             Slave_IO_Running: Yes            Slave_SQL_Running: Yes              Replicate_Do_DB:           Replicate_Ignore_DB:            Replicate_Do_Table:        Replicate_Ignore_Table:       Replicate_Wild_Do_Table:   Replicate_Wild_Ignore_Table:                    Last_Errno: 0                   Last_Error:                  Skip_Counter: 0          Exec_Master_Log_Pos: 651              Relay_Log_Space: 835              Until_Condition: None               Until_Log_File:                 Until_Log_Pos: 0           Master_SSL_Allowed: No           Master_SSL_CA_File:            Master_SSL_CA_Path:               Master_SSL_Cert:             Master_SSL_Cipher:                Master_SSL_Key:         Seconds_Behind_Master: 0Master_SSL_Verify_Server_Cert: No                Last_IO_Errno: 0                Last_IO_Error:                Last_SQL_Errno: 0               Last_SQL_Error:   Replicate_Ignore_Server_Ids:              Master_Server_Id: 1               Master_SSL_Crl:            Master_SSL_Crlpath:                    Using_Gtid: No                  Gtid_IO_Pos: 1 row in set (0.00 sec)

5.在db_master主库上创建beyond数据库。

MariaDB [(none)]> create database beyond;Query OK, 1 row affected (0.01 sec)MariaDB [(none)]> show databases;+--------------------+| Database           |+--------------------+| beyond             || information_schema || mysql              || performance_schema || test               |+--------------------+5 rows in set (0.00 sec)

6.在从库db_slave上查看下数据库,以及从库状态。

[root@db_slave mysql]# mysqlWelcome to the MariaDB monitor.  Commands end with ; or \g.Your MariaDB connection id is 7Server version: 10.0.17-MariaDB-wsrep-log Source distribution, wsrep_25.10.r4144Copyright (c) 2000, 2015, Oracle, MariaDB Corporation Ab and others.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.MariaDB [(none)]> show databases;+--------------------+| Database           |+--------------------+| beyond             || information_schema || mysql              || performance_schema || test               |+--------------------+5 rows in set (0.00 sec)MariaDB [(none)]> show slave status\G*************************** 1. row ***************************               Slave_IO_State: Waiting for master to send event                  Master_Host: 192.168.3.113                  Master_User: taokey                  Master_Port: 3306                Connect_Retry: 5              Master_Log_File: mysql-bin.000004          Read_Master_Log_Pos: 776               Relay_Log_File: db_slave-relay-bin.000002                Relay_Log_Pos: 660        Relay_Master_Log_File: mysql-bin.000004             Slave_IO_Running: Yes            Slave_SQL_Running: Yes              Replicate_Do_DB:           Replicate_Ignore_DB:            Replicate_Do_Table:        Replicate_Ignore_Table:       Replicate_Wild_Do_Table:   Replicate_Wild_Ignore_Table:                    Last_Errno: 0                   Last_Error:                  Skip_Counter: 0          Exec_Master_Log_Pos: 776              Relay_Log_Space: 960              Until_Condition: None               Until_Log_File:                 Until_Log_Pos: 0           Master_SSL_Allowed: No           Master_SSL_CA_File:            Master_SSL_CA_Path:               Master_SSL_Cert:             Master_SSL_Cipher:                Master_SSL_Key:         Seconds_Behind_Master: 0Master_SSL_Verify_Server_Cert: No                Last_IO_Errno: 0                Last_IO_Error:                Last_SQL_Errno: 0               Last_SQL_Error:   Replicate_Ignore_Server_Ids:              Master_Server_Id: 1               Master_SSL_Crl:            Master_SSL_Crlpath:                    Using_Gtid: No                  Gtid_IO_Pos: 1 row in set (0.00 sec)

7.在db_master上,beyond数据库中创建一个lc_course数据表。

MariaDB [(none)]> use beyond;Database changedMariaDB [beyond]> create table lc_course( id int, course_name varchar(100), course_length int, teacher varchar(50), category varchar(100));Query OK, 0 rows affected (0.14 sec)MariaDB [beyond]> show tables;+------------------+| Tables_in_beyond |+------------------+| lc_course        |+------------------+1 row in set (0.00 sec)

8.在db_slave从库上查看复制的结果和状态。

MariaDB [(none)]> use beyond;Database changedMariaDB [beyond]> show tables;+------------------+| Tables_in_beyond |+------------------+| lc_course        |+------------------+1 row in set (0.00 sec)MariaDB [beyond]> show slave status\G*************************** 1. row ***************************               Slave_IO_State: Waiting for master to send event                  Master_Host: 192.168.3.113                  Master_User: taokey                  Master_Port: 3306                Connect_Retry: 5              Master_Log_File: mysql-bin.000004          Read_Master_Log_Pos: 999               Relay_Log_File: db_slave-relay-bin.000002                Relay_Log_Pos: 883        Relay_Master_Log_File: mysql-bin.000004             Slave_IO_Running: Yes            Slave_SQL_Running: Yes              Replicate_Do_DB:           Replicate_Ignore_DB:            Replicate_Do_Table:        Replicate_Ignore_Table:       Replicate_Wild_Do_Table:   Replicate_Wild_Ignore_Table:                    Last_Errno: 0                   Last_Error:                  Skip_Counter: 0          Exec_Master_Log_Pos: 999              Relay_Log_Space: 1183              Until_Condition: None               Until_Log_File:                 Until_Log_Pos: 0           Master_SSL_Allowed: No           Master_SSL_CA_File:            Master_SSL_CA_Path:               Master_SSL_Cert:             Master_SSL_Cipher:                Master_SSL_Key:         Seconds_Behind_Master: 0Master_SSL_Verify_Server_Cert: No                Last_IO_Errno: 0                Last_IO_Error:                Last_SQL_Errno: 0               Last_SQL_Error:   Replicate_Ignore_Server_Ids:              Master_Server_Id: 1               Master_SSL_Crl:            Master_SSL_Crlpath:                    Using_Gtid: No                  Gtid_IO_Pos: 1 row in set (0.00 sec)

本文出自 “岁月在流逝,光辉依然在” 博客,谢绝转载!