MariaDB 数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可。

开发这个分支的原因是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险。

MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。在存储引擎方面,使用XtraDB来代替MySQL的InnoDB。 MariaDB由MySQL的创始人Michael Widenius主导开发,他早前曾以10亿美元的价格,将自己创建的公司MySQL AB卖给了SUN,此后,随着SUN被甲骨文收购,MySQL的所有权也落入Oracle的手中。MariaDB名称来自Michael Widenius的女儿Maria的名字。

MariaDB基于事务的Maria存储引擎,替换了MySQL的MyISAM存储引擎,它使用了Percona的 XtraDB(InnoDB的变体),分支的开发者希望提供访问即将到来的MySQL 5.4 InnoDB性能。这个版本还包括了 PrimeBase XT (PBXT) 和 FederatedX存储引擎。

MariaDB 官方网站: https://mariadb.org

MariaDB 官方安装: https://mariadb.com/kb/en/mariadb/yum/

MariaDB CentOS安装: https://downloads.mariadb.org/mariadb/repositories/   (推荐

 

1. 查找安装源

yum list | grep -i MariaDB

# yum list | grep -i MariaDB
MariaDB-backup.x86_64                    11.4.2-1.el7.centos           @mariadb 
MariaDB-backup-debuginfo.x86_64          11.4.2-1.el7.centos           @mariadb 
MariaDB-client.x86_64                    11.4.2-1.el7.centos           @mariadb    # client
MariaDB-client-compat.noarch             11.4.2-1.el7.centos           @mariadb 
MariaDB-client-debuginfo.x86_64          11.4.2-1.el7.centos           @mariadb 
MariaDB-common.x86_64                    11.4.2-1.el7.centos           @mariadb    # common
MariaDB-common-debuginfo.x86_64          11.4.2-1.el7.centos           @mariadb 
MariaDB-compat.x86_64                    11.4.2-1.el7.centos           @mariadb 
MariaDB-connect-engine.x86_64            11.4.2-1.el7.centos           @mariadb    # connect
MariaDB-connect-engine-debuginfo.x86_64  11.4.2-1.el7.centos           @mariadb 
MariaDB-connect-engine-jdbc.x86_64       11.4.2-1.el7.centos           @mariadb 
MariaDB-cracklib-password-check.x86_64   11.4.2-1.el7.centos           @mariadb 
MariaDB-cracklib-password-check-debuginfo.x86_64
                                         11.4.2-1.el7.centos           @mariadb 
MariaDB-devel.x86_64                     11.4.2-1.el7.centos           @mariadb    # devel
MariaDB-devel-debuginfo.x86_64           11.4.2-1.el7.centos           @mariadb 
MariaDB-gssapi-server.x86_64             11.4.2-1.el7.centos           @mariadb 
MariaDB-gssapi-server-debuginfo.x86_64   11.4.2-1.el7.centos           @mariadb 
MariaDB-hashicorp-key-management.x86_64  11.4.2-1.el7.centos           @mariadb 
MariaDB-hashicorp-key-management-debuginfo.x86_64
                                         11.4.2-1.el7.centos           @mariadb 
MariaDB-oqgraph-engine.x86_64            11.4.2-1.el7.centos           @mariadb 
MariaDB-oqgraph-engine-debuginfo.x86_64  11.4.2-1.el7.centos           @mariadb 
MariaDB-provider-bzip2.x86_64            11.4.2-1.el7.centos           @mariadb 
MariaDB-provider-bzip2-debuginfo.x86_64  11.4.2-1.el7.centos           @mariadb 
MariaDB-provider-lz4.x86_64              11.4.2-1.el7.centos           @mariadb 
MariaDB-provider-lz4-debuginfo.x86_64    11.4.2-1.el7.centos           @mariadb 
MariaDB-provider-lzma.x86_64             11.4.2-1.el7.centos           @mariadb 
MariaDB-provider-lzma-debuginfo.x86_64   11.4.2-1.el7.centos           @mariadb 
MariaDB-provider-lzo.x86_64              11.4.2-1.el7.centos           @mariadb 
MariaDB-provider-lzo-debuginfo.x86_64    11.4.2-1.el7.centos           @mariadb 
MariaDB-provider-snappy.x86_64           11.4.2-1.el7.centos           @mariadb 
MariaDB-provider-snappy-debuginfo.x86_64 11.4.2-1.el7.centos           @mariadb 
MariaDB-rocksdb-engine.x86_64            11.4.2-1.el7.centos           @mariadb 
MariaDB-rocksdb-engine-debuginfo.x86_64  11.4.2-1.el7.centos           @mariadb 
MariaDB-s3-engine.x86_64                 11.4.2-1.el7.centos           @mariadb 
MariaDB-s3-engine-debuginfo.x86_64       11.4.2-1.el7.centos           @mariadb 
MariaDB-server.x86_64                    11.4.2-1.el7.centos           @mariadb    # server
MariaDB-server-compat.noarch             11.4.2-1.el7.centos           @mariadb 
MariaDB-server-debuginfo.x86_64          11.4.2-1.el7.centos           @mariadb 
MariaDB-shared.x86_64                    11.4.2-1.el7.centos           @mariadb 
MariaDB-shared-debuginfo.x86_64          11.4.2-1.el7.centos           @mariadb 
MariaDB-test.x86_64                      11.4.2-1.el7.centos           @mariadb    # test
MariaDB-test-debuginfo.x86_64            11.4.2-1.el7.centos           @mariadb 
galera-4.x86_64                          26.4.18-1.el7.centos          @mariadb    # galera集群
mariadb.x86_64                           1:5.5.68-1.el7                base     
mariadb-bench.x86_64                     1:5.5.68-1.el7                base     
mariadb-devel.i686                       1:5.5.68-1.el7                base   # devel
mariadb-devel.x86_64                     1:5.5.68-1.el7                base     
mariadb-embedded.i686                    1:5.5.68-1.el7                base     
mariadb-embedded.x86_64                  1:5.5.68-1.el7                base     
mariadb-embedded-devel.i686              1:5.5.68-1.el7                base     
mariadb-embedded-devel.x86_64            1:5.5.68-1.el7                base     
mariadb-libs.i686                        1:5.5.68-1.el7                base     
mariadb-libs.x86_64                      1:5.5.68-1.el7                base     
mariadb-server.x86_64                    1:5.5.68-1.el7                base   # server
mariadb-test.x86_64                      1:5.5.68-1.el7                base

2. 清空缓存

yum -y remove MariaDB-server MariaDB-client MariaDB-devel

yum clean all

yum makecache

 

3. 查看已安装

rpm -qa | grep -i MariaDB

## CentOS 7.6
# rpm -qa | grep -i MariaDB
MariaDB-connect-engine-10.3.9-1.el7.centos.x86_64
MariaDB-devel-10.3.9-1.el7.centos.x86_64
MariaDB-compat-10.3.9-1.el7.centos.x86_64
MariaDB-tokudb-engine-10.3.9-1.el7.centos.x86_64
MariaDB-oqgraph-engine-10.3.9-1.el7.centos.x86_64
MariaDB-server-10.3.9-1.el7.centos.x86_64
MariaDB-rocksdb-engine-10.3.9-1.el7.centos.x86_64
MariaDB-gssapi-server-10.3.9-1.el7.centos.x86_64
MariaDB-backup-10.3.9-1.el7.centos.x86_64
MariaDB-common-10.3.9-1.el7.centos.x86_64
MariaDB-cracklib-password-check-10.3.9-1.el7.centos.x86_64
MariaDB-aws-key-management-10.3.9-1.el7.centos.x86_64
MariaDB-shared-10.3.9-1.el7.centos.x86_64
MariaDB-client-10.3.9-1.el7.centos.x86_64
MariaDB-cassandra-engine-10.3.9-1.el7.centos.x86_64
MariaDB-test-10.3.9-1.el7.centos.x86_64
## CentOS 7.9
# rpm -qa | grep -i MariaDB
MariaDB-test-11.4.2-1.el7.centos.x86_64
MariaDB-gssapi-server-debuginfo-11.4.2-1.el7.centos.x86_64
MariaDB-connect-engine-debuginfo-11.4.2-1.el7.centos.x86_64
MariaDB-s3-engine-debuginfo-11.4.2-1.el7.centos.x86_64
MariaDB-provider-bzip2-debuginfo-11.4.2-1.el7.centos.x86_64
MariaDB-common-11.4.2-1.el7.centos.x86_64
MariaDB-shared-11.4.2-1.el7.centos.x86_64
MariaDB-client-11.4.2-1.el7.centos.x86_64                            # client
MariaDB-connect-engine-11.4.2-1.el7.centos.x86_64
MariaDB-provider-lzma-11.4.2-1.el7.centos.x86_64
MariaDB-hashicorp-key-management-11.4.2-1.el7.centos.x86_64
MariaDB-gssapi-server-11.4.2-1.el7.centos.x86_64
MariaDB-compat-11.4.2-1.el7.centos.x86_64
MariaDB-backup-11.4.2-1.el7.centos.x86_64
MariaDB-client-debuginfo-11.4.2-1.el7.centos.x86_64
MariaDB-hashicorp-key-management-debuginfo-11.4.2-1.el7.centos.x86_64
MariaDB-provider-lzma-debuginfo-11.4.2-1.el7.centos.x86_64
MariaDB-devel-debuginfo-11.4.2-1.el7.centos.x86_64
MariaDB-provider-snappy-debuginfo-11.4.2-1.el7.centos.x86_64
MariaDB-backup-debuginfo-11.4.2-1.el7.centos.x86_64
MariaDB-test-debuginfo-11.4.2-1.el7.centos.x86_64
MariaDB-shared-debuginfo-11.4.2-1.el7.centos.x86_64
MariaDB-provider-lzo-debuginfo-11.4.2-1.el7.centos.x86_64
MariaDB-rocksdb-engine-debuginfo-11.4.2-1.el7.centos.x86_64
MariaDB-client-compat-11.4.2-1.el7.centos.noarch
MariaDB-server-11.4.2-1.el7.centos.x86_64                            # client
MariaDB-connect-engine-jdbc-11.4.2-1.el7.centos.x86_64
MariaDB-provider-snappy-11.4.2-1.el7.centos.x86_64
MariaDB-s3-engine-11.4.2-1.el7.centos.x86_64
MariaDB-oqgraph-engine-11.4.2-1.el7.centos.x86_64
MariaDB-rocksdb-engine-11.4.2-1.el7.centos.x86_64
MariaDB-cracklib-password-check-11.4.2-1.el7.centos.x86_64
MariaDB-devel-11.4.2-1.el7.centos.x86_64                             # devel
MariaDB-oqgraph-engine-debuginfo-11.4.2-1.el7.centos.x86_64
MariaDB-cracklib-password-check-debuginfo-11.4.2-1.el7.centos.x86_64
MariaDB-server-debuginfo-11.4.2-1.el7.centos.x86_64
MariaDB-provider-lz4-debuginfo-11.4.2-1.el7.centos.x86_64
MariaDB-common-debuginfo-11.4.2-1.el7.centos.x86_64
MariaDB-server-compat-11.4.2-1.el7.centos.noarch
MariaDB-provider-bzip2-11.4.2-1.el7.centos.x86_64
MariaDB-provider-lz4-11.4.2-1.el7.centos.x86_64
MariaDB-provider-lzo-11.4.2-1.el7.centos.x86_64

 

使用 yum 安装的权限要求是 root 用户,如果不是则需要在shell命令之前加上 sudo,

或者 su root  切换到 super 管理员进行操作,并可能需要输入密码。

1. 添加 yum 数据源

CentOS7系统更换YUM Repo源,

详见:https://mariadb.org/mirrorbitshttps://mirmon.mariadb.org

## https://mirmon.mariadb.org

## 搜索 cn : https://mirmon.mariadb.org/#cn

https://mirrors.aliyun.com/mariadb/            # 阿里云,可用 (推荐)
https://mirrors.neusoft.edu.cn/mariadb/        # 东北大学,可用
https://mirrors.tuna.tsinghua.edu.cn/mariadb/  # 清华大学,可用
https://mirrors.ustc.edu.cn/mariadb/           # 中国科学技术大学,可用
https://mirrors.nju.edu.cn/mariadb/            # 南京大学,不可用

备份原镜像
sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
sudo mv /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo.backup

阿里云的Base源和EPEL源
sudo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
sudo wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

腾讯云的Base源和EPEL源
sudo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.cloud.tencent.com/repo/centos7_base.repo
sudo wget -O /etc/yum.repos.d/epel.repo http://mirrors.cloud.tencent.com/repo/epel-7.repo

163的Base源
sudo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo

 

建议命名为 MariaDB.repo 类似的名字:

cd /etc/yum.repos.d/  
vim /etc/yum.repos.d/MariaDB.repo

然后(CentOS 6.x),添加写入如下内容: 

# /etc/yum.repos.d/MariaDB.repo  
# MariaDB 5.5 CentOS repository list - created 2013-12-23 10:27 UTC  
# http://mariadb.org/mariadb/repositories/  
[mariadb]  
name = MariaDB  
baseurl = http://yum.mariadb.org/10.0/centos6-amd64  
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB  
gpgcheck=1

或者(CentOS 7.6,10.3.11-MariaDB,2018-09-21)

[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.3/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

或者(CentOS 7.911.0.2-MariaDB,2023-07-16

# MariaDB 11.0 CentOS repository list - created 2023-06-17 03:06 UTC
# https://mariadb.org/download/
[mariadb]
name = MariaDB
#rpm.mariadb.org is a dynamic mirror if your preferred mirror goes offline. See https://mariadb.org/mirrorbits/ for details.
#baseurl = https://rpm.mariadb.org/11.0/centos/$releasever/$basearch
baseurl = https://mirrors.neusoft.edu.cn/mariadb/yum/11.0/centos/$releasever/$basearch
module_hotfixes = 1
#gpgkey = https://rpm.mariadb.org/RPM-GPG-KEY-MariaDB
gpgkey = https://mirrors.neusoft.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck = 1

或者Alibaba Cloud Linux release 3 (CentOS 7.9 替代品, 11.4.2-MariaDB,2024-06-28

# MariaDB 11.4 CentOS repository list - created 2024-06-28 03:19 UTC
# https://mariadb.org/download/
[mariadb]
name = MariaDB
# rpm.mariadb.org is a dynamic mirror if your preferred mirror goes offline. See https://mariadb.org/mirrorbits/ for details.
# baseurl = https://rpm.mariadb.org/11.4/centos/$releasever/$basearch
#releasever = 7
#releasever = 7Server
#baseurl = https://mirrors.aliyun.com/mariadb/yum/11.4/centos/$releasever/$basearch
baseurl = https://mirrors.aliyun.com/mariadb/yum/11.4/centos/7Server/$basearch
#baseurl = https://mirrors.aliyun.com/mariadb/yum/11.4/centos/7/x86_64/repodata/repomd.xml
#baseurl = https://mirrors.aliyun.com/mariadb/yum/11.4/centos/7Server/x86_64/repodata/repomd.xml
#baseurl = https://mirrors.neusoft.edu.cn/mariadb/yum/11.4.2/centos/7/x86_64/repodata/repomd.xml
#baseurl = https://mirrors.neusoft.edu.cn/mariadb/yum/11.4.2/centos/7Server/x86_64/repodata/repomd.xml
module_hotfixes = 1
# gpgkey = https://rpm.mariadb.org/RPM-GPG-KEY-MariaDB
gpgkey = https://mirrors.aliyun.com/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck = 1

该文件的内容是参考官网,并从官网上生成的,设置安装源仓库的 具体的地址为:

https://downloads.mariadb.org/mariadb/repositories/     (推荐

选择好操作系统版本(例如CentOS)之后既可以查看,其他操作系统的安装源也可以在此处查看并设置。

如果服务器不支持https协议,或者gpgkey 保错,确保没问题的话,可以将 gpgcheck=1 修改为 gpgcheck=0,则不进行校验.

MariaDB.repo 里的参数说明:

$releasever:是操作系统发行的主版本号,例如:7或7Server(CentOS 7.x)、6 或 6Server(CentOS 7.x)

$releasever 查看方式:

方式1)cat /etc/redhat-release 

# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)      # $releasever = 7

# cat /etc/redhat-release 
CentOS Linux release 7.9.2009 (Core)      # $releasever = 7

# cat /etc/redhat-release
Alibaba Cloud Linux release 3 (Soaring Falcon)    # $releasever = 3

方式2)yum install redhat-lsb && lsb_release -a

# yum install redhat-lsb && lsb_release -a
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * remi-php80: mirrors.tuna.tsinghua.edu.cn
 * remi-safe: mirrors.tuna.tsinghua.edu.cn
Package redhat-lsb-4.1-27.el7.centos.1.x86_64 already installed and latest version
Nothing to do
LSB Version:    :core-4.1-amd64:core-4.1-noarch:cxx-4.1-amd64:cxx-4.1-noarch:desktop-4.1-amd64:desktop-4.1-noarch:languages-4.1-amd64:languages-4.1-noarch:printing-4.1-amd64:printing-4.1-noarch
Distributor ID: CentOS
Description:    CentOS Linux release 7.9.2009 (Core)
Release:        7.9.2009
Codename:       Core

# yum install redhat-lsb && lsb_release -a
Last metadata expiration check: 0:27:16 ago on Fri 28 Jun 2024 11:46:05 AM CST.
Package redhat-lsb-4.1-47.2.al8.x86_64 is already installed.
Dependencies resolved.
Nothing to do.
Complete!
LSB Version:    :core-4.1-amd64:core-4.1-noarch:cxx-4.1-amd64:cxx-4.1-noarch:desktop-4.1-amd64:desktop-4.1-noarch:languages-4.1-amd64:languages-4.1-noarch:printing-4.1-amd64:printing-4.1-noarch
Distributor ID: AlibabaCloud
Description:    Alibaba Cloud Linux release 3 (Soaring Falcon) 
Release:        3
Codename:       SoaringFalcon

$basearch:是操作系统的CPU主要架构,可通过命令 arch 查看,包含"i386", "i486","i586", "alpha", "sparc", "arm", "m68k","mips","ppc","ia64","x86_64"等;ia64和x86_64就说明这台机器是64位的

## CentOS 7.9 / 7.6
# arch
x86_64

## Alibaba Cloud Linux release 3
# arch
x86_64

## MacOS
$ arch
i386

示例:

baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/

解析参数:$releasever = 7,$basearch = x86_64 则其完整路径如下:

baseurl=http://mirror.centos.org/centos/7/os/x86_64/

 

yum源的生效:清理和生成缓存

sudo yum clean all

sudo yum makecache

 

2. 安装数据库

yum -y remove MariaDB-server MariaDB-client MariaDB-devel MariaDB-*

yum clean all && yum makecache

## rm -rf /var/cache/yum

yum -y install MariaDB-server MariaDB-client MariaDB-devel MariaDB-*

如果要删除旧的数据库可以使用remove, 参数 -y 是确认,默认不用提示输入y。

 

3. 启动数据库

如果不用进行其他的操作,则现在就可以直接启动数据库,并进行测试了。

CentOS 7/8/Stream查看Maria状态

# 查看mariadb状态 
# systemctl status mariadb

# 关闭数据库    
# systemctl stop mariadb

# 启动数据库   
systemctl start mariadb

MariaDB 在 /etc/init.d/ 目录下没有启动项,通过 systemctl 启动/关闭/查看

 

CentOS 5/6查看mysql状态

# 查看mysql状态
# service mysql status 
# 关闭数据库   
# service mysql stop  
# 启动数据库  
service mysql start

MariaDB 安装后,默认启动命令为mysql,为了和MySQL保持一致,可以在 /etc/init.d/mysql 修改为 /etc/init.d/mysqld,修改命令如下:

cp /etc/init.d/mysql /etc/init.d/mysqld

 

4. 修改root密码

1)MariaDB 11.xx 使用命令 mariadb-secure-installation 设置 root 密码 (推荐)

mariadb-secure-installation       # 根据提示逐步设置 root 密码,删除或保留 test数据库等

2)MariaDB 5.xx 使用如下命令设置root密码

#  修改root密码
mysqladmin -u root password 'root'

提示错误信息:

# mysqladmin -u root password '123456'
mysqladmin: Deprecated program name. It will be removed in a future release, use '/usr/bin/mariadb-admin' instead
mysqladmin: unable to change password; error: 'The MariaDB server is running with the --strict-password-validation option so it cannot execute this statement'

错误原因:

1)mysqladmin已被弃用,推荐使用新命令 '/usr/bin/mariadb-admin'

2)不能修改密码,原因是MariaDB server正在运行 --strict-password-validation option

解决方法:

mariadb-admin -P 33806 -u root password 'Root@1234'

因为安装好以后的root密码是空,所以需要设置密码,例如 'Root@1234'

如果是测试服务器,那么你可以直接使用root,不重要的密码很多时候可以设置为和用户名一致,以免忘记了又想不起来。

如果是重要的服务器,请使用复杂密码,各种自由组合规则的字符,例如: #$%^&@ABCD_xyz@1234

 

修改端口号

CentOS 7 MariaDB 的配置文件,默认路径为:/etc/my.cnf    /etc/my.cnf.d/

# ll /etc/my.cnf
-rw-r--r-- 1 root root 202 Aug 17 18:05 /etc/my.cnf
#
#
# ll /etc/my.cnf.d/
total 12
-rw-r--r-- 1 root root  763 Aug 17 18:05 enable_encryption.preset
-rw-r--r-- 1 root root  232 Aug 17 18:05 mysql-clients.cnf
-rw-r--r-- 1 root root 1164 Sep  6 16:49 server.cnf

修改文件

vim /etc/my.cnf.d/server.cnf 

添加如下配置

# this is only for the mysqld standalone daemon

[mysqld]

port = 33806

max_allowed_packet=12800M

max_connections=2048

max_connect_errors=1000

重启 MySQL 服务,使其生效

/etc/init.d/mysql restart

 

5. 登录数据库

mariadb-secure-installation       # 根据提示逐步设置 root 密码,删除或保留 test数据库等

mysql -u root -p

如果是本机,可直接使用上面的命令登录,当然,需要输入密码.

如果是其他机器,需如下的形式,指定MySQL服务器IP:

mysql -h 127.0.0.1 -P 33806 -u root -p

 

6. 简单SQL测试

>
-- 查看MySQL的状态  
status;
-- 显示支持的引擎  
show engines;
-- 显示所有数据库  
show databases;
-- 切换数据库上下文,即设置当前会话的默认数据库  
use test;
-- 显示本数据库所有的表  
show tables;
-- 创建一个表  
CREATE TABLE t_test (  
  id int(11) UNSIGNED NOT NULL AUTO_INCREMENT,  
  userId char(36),  
  lastLoginTime timestamp,  
  PRIMARY KEY (id)  
) ENGINE=InnoDB DEFAULT CHARSET=utf8;  

-- 插入测试数据  
insert into t_test(userId)  
    values  
('admin')  
,('haha')  
;

-- 简单查询  
select * from t_test;  
select id,userId from t_test  where userId='admin' ;

 

7.  修改数据存放目录

mysql, MariaDB 的默认数据存放在 /var/lib/mysql/ 目录下。

如果不想放到此处,或者是想要程序和数据分离,或者是磁盘原因需要切换到其他路径,则可以通过修改 datadir系统变量来达成目的.

# 停止数据库
service mysql stop

# 创建目录,假设没有的话
mkdir /usr/local/ieternal/mysql_data

# 拷贝默认数据库到新的位置
# -a 命令是将文件属性一起拷贝,否则各种问题
cp -a /var/lib/mysql /usr/local/ieternal/mysql_data

# 备份原来的数据
cp -a /etc/my.cnf /etc/my.cnf_original

# 其实查看 /etc/my.cnf 文件可以发现
# MariaDB 的此文件之中只有一个包含语句
# 所以需要修改的配置文件为 /etc/my.cnf.d/server.cnf
cp /etc/my.cnf.d/server.cnf /etc/my.cnf.d/server.cnf_original
vim /etc/my.cnf.d/server.cnf

然后 按 i 进入编辑模式,可以插入相关内容.使用键盘的上下左右键可以移动光标, 编辑完成以后,按 ESC 退出编辑模式(进入命令模式), 然后输入命令:wq 保存并退出

# 在文件的 mysqld 节下添加内容

[mysqld]
datadir=/usr/local/ieternal/mysql_data/mysql  
socket=/var/lib/mysql/mysql.sock
#default-character-set=utf8  
character_set_server=utf8
slow_query_log=on  
slow_query_log_file=/usr/local/ieternal/mysql_data/slow_query_log.log  
long_query_time=2

其中,也只有 datadir 和 socket 比较重要; 而 default-character-set 是 mysql 自己认识的,而 mariadb5.5 就不认识,相当于变成了 character_set_server

 

7.1 创建慢查询日志文件

既然上面指定了慢查询日志文件,我后来看了下MariaDB的err日志,发现MariaDB不会自己创建该文件,所以我们需要自己创建,并修改相应的文件权限(比如 mysql 采用 mysql用户,可能我们使用 root用户创建的文件,此时要求慢查询日志文件对mysql用户可读可写就行。

touch /usr/local/ieternal/mysql_data/slow_query_log.log
chmod 666 /usr/local/ieternal/mysql_data/slow_query_log.log

然后重新启动MySQL

service mysql start

 

配置主服务器 master

主从复制包含两个步骤: 1) 在 master 主服务器(组)上的设置; 2) 在 slave 从属服务器(组)上的设置.

  1. 如果没有启用,则需要 激活二进制日志.
  2. 给 master 设置唯一的  server_id ,所有的 slave 从属服务器也要设置  server_id; server_id值可以是整数型的数字(1 ~ 2^31-1), 在同一个复制组(replicating group)中的每台服务器的server_id都必须是唯一的.
  3. slave 从属服务器需要有连接并从master复制的权限. 通常是为每一台slave 创建一个单独的用户(user),并且只授予复制的权限(REPLICATION SLAVE 权限).

示例

GRANT REPLICATION SLAVE ON *.* TO 'replication_user'@'slave_host' IDENTIFIED BY 'bigs3cret';   
FLUSH PRIVILEGES;

需要注意,有一些系统配置选项可能会影响主从复制,查看下面的变量以避免发生问题:

skip-networking,如果 "skip-networking=1",则服务器将限制只能由localhost连接,阻止其他机器远程连到此服务器上。

bind_address,类似地,如果 服务器只监听 127.0.0.1(localhost)的TCP/IP连接,则远程的 slave也不能连接到此服务器

 

配置从属服务器 slave

给 slave 指定唯一的 server_id. 所有服务器,不管是主服务器,还是从服务器,都要设置 server_id. server_id值可以是整数型的数字(1 ~ 2^31-1), 在同一个复制组(replicating group)中的每台(/个)服务器的server_id都必须是唯一的.

要让此配置项生效,需要重新启动服务.

 

获取 master 的二进制日志坐标

当查看当前 二进制日志 的position(位置)时,需要阻止任何数据库的提交.可以通过此坐标点告诉slave服务器从哪一个特定的点开始复制。

  1. 在 master上执行命令 "FLUSH TABLES WITH READ LOCK",以强制写入日志,并锁定所有的表 —— 在此期间不能关闭会话,一关闭会话就会释放锁.
  2. 通过运行 "SHOW MASTER STATUS" 来获取二进制日志的当前位置信息.
  3. 记下 File 以及 Position 信息. 如果刚刚才开启了二进制日志功能,则为空.
  4. 然后,开始从master 拷贝 data 到 slave,请参考: Backup, Restore and Import
  5. 将数据从master拷贝到slave以后,可以执行"UNLOCK TABLES;"释放master上的锁。

示例如下:

--  
SHOW MASTER STATUS;
+--------------------+----------+--------------+------------------+  
| File               | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+--------------------+----------+--------------+------------------+  
| mariadb-bin.000096 |      568 |              |                  |
+--------------------+----------+--------------+------------------+  
--

 

启动从属服务器 Slave

数据导入以后,就可以启动复制功能了。 通过执行 "CHANGE MASTER TO" 来开始.

确保 "MASTER_LOG_FILE",以及 "MASTER_LOG_POS" 与master早时候记下的信息一致.

示例如下:

CHANGE MASTER TO  
  MASTER_HOST='master.domain.com',  
  MASTER_USER='replication_user',  
  MASTER_PASSWORD='bigs3cret',  
  MASTER_PORT=33806,
  MASTER_LOG_FILE='mariadb-bin.000096',  
  MASTER_LOG_POS=568,
  MASTER_CONNECT_RETRY=10;

然后,启动slave

START SLAVE;

查看 slave状态:

SHOW SLAVE STATUS;

如果需要暂停 slave 复制,则可使用SQL :

stop slave; 

说明: 假如停止 MYSQL(MariaDB),然后重新启动,则 Slave会随mysqld 自动启动.所以不需要担心日常的重启等操作.

[root@AY13 mysql]# service mysql stop
Shutting down MySQL. SUCCESS! 
[root@AY13 mysql]# service mysql start
Starting MySQL.. SUCCESS!

更多问题,欢迎加入QQ群 《脚本娃娃-桃花岛》进行讨论,口令: Ext

 

MariaDB激活二进制日志

要启用二进制日志功能,可以使用 "--log-bin[=name]"选项来启动服务器.

如果文件名中包含了后缀(例如 "--log-bin[=master-bin.log]"),则后缀(".log")将会被忽略.

如果没有指定文件名,默认使用 datadir/log-basename-bindatadir/mysql-bin 或者 datadir/mariadb-bin(如果也没有 --log-basename 选项,根据server版本的不同,会使用后两个中的一个); 

datadir 是存放数据(data)的目录,由系统变量 datadir 定义.(启动参数 --datadir=path 或者 -h path);

强烈建议: 使用  --log-basename  或者指定二进制日志的文件名,以便服务器的hostname改变以后也不影响复制(replication );

存储二进制日志的目录,用于存放 各个独立的二进制日志文件,以及对这些文件的二进制日志索引(文件).

二进制日志文件的扩展名是一序列的数字.每增加一个日志文件,扩展名的数字就会增加;所以较老的日志的扩展名数字较小,最近的日志的扩展名数字最大。

每次服务器启动,就会启用一个新的二进制日志,当然扩展名也是新的;启动或停止时日志会被强制写入物理文件(平时可能存储在内存缓存中,由操作系统决定何时写入).也可以通过定义 max_binlog_size 变量来指定一个数字,当日志累增到此值就会强制写入硬盘.

二进制日志索引文件按顺序储存着所有的二进制日志文件的索引.

datadir下的文件列表示例如下:

shell> ls -l 
total 100
...
-rw-rw---- 1 mysql adm 2098 Apr 19 00:46 mariadb-bin.000079
-rw-rw---- 1 mysql adm  332 Apr 19 00:56 mariadb-bin.000080
-rw-rw---- 1 mysql adm  347 Apr 19 07:36 mariadb-bin.000081
-rw-rw---- 1 mysql adm  306 Apr 20 07:15 mariadb-bin.000082
-rw-rw---- 1 mysql adm  332 Apr 20 07:41 mariadb-bin.000083
-rw-rw---- 1 mysql adm  373 Apr 21 07:56 mariadb-bin.000084
-rw-rw---- 1 mysql adm  347 Apr 21 09:09 mariadb-bin.000085
-rw-rw---- 1 mysql adm  398 Apr 21 21:24 mariadb-bin.000086
-rw-rw---- 1 mysql adm  816 Apr 21 17:05 mariadb-bin.index

二进制日志index文件的名字部分默认与其他的二进制日志文件相同,而扩展名使用".index",当然,index文件的名字也可以通过" --log-bin-index[=filename] " 选项来单独指定.

具有 SUPER 权限的客户端,可以通过设置 sql_log_bin 变量,来为此次会话禁用或者再次启用二进制日志;

(sql_log_bin 是一个session变量,默认值是1,只有具有 SUPER 权限的客户端可以设置;设置为 0 则此客户端的的操作将不记入二进制日志;)

示例如下:

MariaDB [test]> SET sql_log_bin = 0;
MariaDB [test]> SET sql_log_bin = 1;

 

二进制日志的格式

二进制日志有三种格式:

默认是 基于语句的日志(statement-based);

row-based是基于行的日志;

mix是可以混合前面两种日志的格式;

详情请参考: Binary Log Formats

MariaDB服务器所有的配置选项参见: mysqld Options (full list)

MariaDB服务器系统变量参见: Server System Variables

 

 

参考推荐:

Centos 使用YUM安装MariaDB

CentOS 7.2 / 6.5 系统安装指引

LNMP(CentOS+Nginx+Mysql+PHP)服务器环境配置

Linux 配置 nginx、mysql、php-fpm、redis 开机启动

MySQL 查看数据库大小、表大小和最后修改时间

MySQL 查询语句取整数或小数

MySQL 正则表达式查询