*关于MariaDB的介绍:
MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可。开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险。
MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。在存储引擎方面,10.0.9版起使用XtraDB(名称代号为Aria)来代替MySQL的InnoDB。
创建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)
本文出自 “岁月在流逝,光辉依然在” 博客,谢绝转载!