MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可。开发这个分支的原因之一是:Oracle公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险。
MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。在存储引擎方面,使用XtraDB来代替MySQL的InnoDB。
MariaDB由MySQL的创始人Michael Widenius主导开发,他早前曾以10亿美元的价格,将自己创建的公司MySQL AB卖给了SUN,此后,随着SUN被Oracle收购,MySQL的所有权也落入Oracle的手中。MariaDB名称来自Michael Widenius的女儿Maria的名字。
2008年,Sun收购MySQL,然后2010年Oracle又收购了Sun,MySQL落入了Oracle手中。Oracle与开源社区关系的一直不太好,将MySQL弄成了社区版和企业版,不能免费商业使用。MySQL企业版的新功能不公开源代码,这样让用户很不爽。MariaDB 则没有这方面的问题。
有必要从MySQL切换到MariaDB实例:
- Red Hat企业发行版RHEL 7可能会使用MariaDB替代MySQL,一旦RHEL完成切换,基于RHEL的社区版CentOS将会紧跟着作出改变
- Fedora也计划在Fedora 19中的以MariaDB取代MySQL
- 维基百科已经使用MariaDB取代了MySQL
与MySQL相比,MariaDB的优势在于:
- Maria 存储引擎
- PBXT 存储引擎
- XtraDB 存储引擎
- FederatedX 存储引擎
- 更快的复制查询处理
- 线程池
- 更少的警告和bug
- 运行速度更快
- 更多的 Extensions (More index parts, new startup options etc)
- 更好的功能测试
- 数据表消除
- 慢查询日志的扩展统计
- 支持对 Unicode 的排序
MariaDB将添加到《lnmp一键安装包》和《OneinStack》
- cd /root/lnmp/src
- wget -c http://ftp.osuosl.org/pub/mariadb/mariadb-5.5.32/kvm-tarbake-jaunty-x86/mariadb-5.5.32.tar.gz
- useradd -M -s /sbin/nologin mysql
- mkdir -p /data/mariadb;chown mysql.mysql -R /data/mariadb
- tar xzf cmake-2.8.11.2.tar.gz
- cd cmake-2.8.11.2
- ./configure
- make && make install
- cd ..
- tar zxf mariadb-5.5.32.tar.gz
- cd mariadb-5.5.32
- cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mariadb
- -DMYSQL_UNIX_ADDR=/tmp/mysql.sock
- -DMYSQL_DATADIR=/data/mariadb
- -DSYSCONFDIR=/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=1
- -DDEFAULT_CHARSET=utf8
- -DDEFAULT_COLLATION=utf8_general_ci
- -DEXTRA_CHARSETS=all
- -DWITH_BIG_TABLES=1
- -DWITH_DEBUG=0
- make && make install
- /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
- cd ..
- # my.cf
- cat > /etc/my.cnf << EOF
- [mysqld]
- basedir = /usr/local/mariadb
- datadir = /data/mariadb
- pid-file = /data/mariadb/mariadb.pid
- character-set-server = utf8
- collation-server = utf8_general_ci
- user = mysql
- port = 3306
- default_storage_engine = InnoDB
- innodb_file_per_table = 1
- server_id = 1
- log_bin = mysql-bin
- binlog_format = mixed
- expire_logs_days = 7
- bind-address = 0.0.0.0
- # name-resolve
- skip-name-resolve
- skip-host-cache
- #lower_case_table_names = 1
- ft_min_word_len = 1
- query_cache_size = 64M
- query_cache_type = 1
- skip-external-locking
- key_buffer_size = 16M
- max_allowed_packet = 1M
- table_open_cache = 64
- sort_buffer_size = 512K
- net_buffer_length = 8K
- read_buffer_size = 256K
- read_rnd_buffer_size = 512K
- myisam_sort_buffer_size = 8M
- # LOG
- log_error = /data/mariadb/mariadb-error.log
- long_query_time = 1
- slow_query_log
- slow_query_log_file = /data/mariadb/mariadb-slow.log
- # Oher
- #max_connections = 1000
- open_files_limit = 65535
- [client]
- port = 3306
- EOF
- /usr/local/mariadb/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mariadb --datadir=/data/mariadb
- chown mysql.mysql -R /data/mariadb
- /sbin/service mysqld start
- export PATH=$PATH:/usr/local/mariadb/bin
- echo 'export PATH=$PATH:/usr/local/mariadb/bin' >> /etc/profile
- source /etc/profile
- /usr/local/mariadb/bin/mysql -e "grant all privileges on *.* to root@'127.0.0.1' identified by "dbrootpwd" with grant option;"
- /usr/local/mariadb/bin/mysql -e "grant all privileges on *.* to root@'localhost' identified by "dbrootpwd" with grant option;"
- /usr/local/mariadb/bin/mysql -uroot -pdbrootpwd -e "delete from mysql.user where Password='';"
- /usr/local/mariadb/bin/mysql -uroot -pdbrootpwd -e "delete from mysql.db where User='';"
- /usr/local/mariadb/bin/mysql -uroot -pdbrootpwd -e "drop database test;"
- /sbin/service mysqld restart