CentOS 安装配置MariaDB
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/mirrorbits 或 https://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.9,11.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 从属服务器(组)上的设置.
- 如果没有启用,则需要 激活二进制日志.
- 给 master 设置唯一的 server_id ,所有的 slave 从属服务器也要设置 server_id; server_id值可以是整数型的数字(1 ~ 2^31-1), 在同一个复制组(replicating group)中的每台服务器的server_id都必须是唯一的.
- 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服务器从哪一个特定的点开始复制。
- 在 master上执行命令 "FLUSH TABLES WITH READ LOCK",以强制写入日志,并锁定所有的表 —— 在此期间不能关闭会话,一关闭会话就会释放锁.
- 通过运行 "SHOW MASTER STATUS" 来获取二进制日志的当前位置信息.
- 记下 File 以及 Position 信息. 如果刚刚才开启了二进制日志功能,则为空.
- 然后,开始从master 拷贝 data 到 slave,请参考: Backup, Restore and Import
- 将数据从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
要启用二进制日志功能,可以使用 "--log-bin[=name]"选项来启动服务器.
如果文件名中包含了后缀(例如 "--log-bin[=master-bin.log]"),则后缀(".log")将会被忽略.
如果没有指定文件名,默认使用 datadir/log-basename-bin, datadir/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
参考推荐:
LNMP(CentOS+Nginx+Mysql+PHP)服务器环境配置
Linux 配置 nginx、mysql、php-fpm、redis 开机启动
版权所有: 本文系米扑博客原创、转载、摘录,或修订后发表,最后更新于 2024-07-04 10:18:46
侵权处理: 本个人博客,不盈利,若侵犯了您的作品权,请联系博主删除,莫恶意,索钱财,感谢!