Linux、Centos ×86架构下mariadb数据库离线安装与升级,断电异常崩溃后恢复,一篇全搞定!
·
1.先卸载系统自带mysql与mariadb环境。
rpm -e --nodeps mariadb-libs
rpm -e mariadb-server --nodeps
yum -y remove mysql*
yum -y remove mariadb*
2.若是升级旧版本,则备份原数据库并且重命名原目录(也可以删除),若新安装直接跳第3步查看。
2.1.进入数据库的bin目录下,我的是在/usr/local/mysql/bin下,密码为123456,则运行如下命令
./mysqldump -uroot -p123456 --all-databases > /usr/local/backup.sql
2.2.关闭数据库服务,有redis也可一并关闭
systemctl stop mariadb
systemctl stop redis
2.3.修改原目录,原安装目录在/usr/local/mysql 原配置文件在/etc/my.cnf
cd /usr/local
mv mysql/ mysql.bak
cd /usr/bin
mv mysql mysql.bak
cd /usr/lib64
mv mysql/ mysql.bak
cd /etc/
mv mysql/ mysql.bak
cd /var/log/
mv mariadb/ mariadb.bak
3.开始使用离线压缩包安装,首先去官网下对应版本,我这里以mariadb-11.2.2-linux-systemd-x86_64.tar.gz为例
下载地址 Download MariaDB Server - MariaDB.org
3.1使用ftp等工具上传mariadb-11.2.2-linux-systemd-x86_64.tar.gz到/usr/local目录下,开始安装
tar -zxvf mariadb-1X.X.X-linux-systemd-x86_64.tar.gz
mv mariadb-1X.X.X-linux-systemd-x86_64/ mysql
groupadd -r mysql
useradd -r -g mysql mysql
chown -R mysql:mysql /usr/local/mysql
mkdir -p /usr/local/mysql/data
cd /usr/local/mysql
chown -R mysql:mysql /usr/local/mysql
chown -R mysql:mysql /usr/local/mysql/data
./scripts/mysql_install_db --datadir=/usr/local/mysql/data --user=mysql
mkdir /var/log/mariadb/
touch /var/log/mariadb/mariadb.log
setfacl -R -m u:mysql:rwx /var/log/mariadb/mariadb.log
##mv /etc/my.cnf /etc/my.cnf.bak
cp support-files/wsrep.cnf /etc/my.cnf
3.2编辑配置文件,写入mysqld标签下,vi /etc/my.cnf
character_set_server=utf8mb4
collation-server=utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'
skip-character-set-client-handshake=true
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
port = 3306
socket =/tmp/mysql.sock
max_connections=5000
innodb_file_per_table = on
skip-external-locking
lower_case_table_names=0
key_buffer_size = 384M
max_allowed_packet = 1M
table_open_cache = 512
sort_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 8M
myisam_sort_buffer_size = 64M
thread_cache_size = 8
query_cache_size = 32M
slow_query_log = on
long_query_time = 10 #设置统计时间阈值,sql执行超过这个时间即统计,单位是秒
slow_query_log_file = /tmp/slow.log #日志存放位置
thread_concurrency = 8
3.3 建立全局环境变量,做成系统服务设置开机自启,启动服务等。
echo 'export PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysql.sh #建环境变量
source /etc/profile.d/mysql.sh
cp support-files/mysql.server /etc/rc.d/init.d/Mariadb
chkconfig --add Mariadb #将服务加入开机自启列表
chkconfig Mariadb on #开机自启
systemctl start Mariadb
chkconfig --list Mariadb #查看是否安装成功
mysql -V && systemctl status Mariadb
若出现 mysql:error while loading shared libraries: libncurses.so.5: 或者mysql: error while loading shared libraries: libtinfo.so.5:的情况,错误的原因是数据库依赖的默认lib组件与系统的lib组件版本不一致,此时复制系统的改为数据库需要的版本号即可解决。


find / -name 'libncurses*'
cd /usr/lib64/
cp -ra libncurses.so.6 libncurses.so.5
find / -name 'libtinfo*'
cp -ra libtinfo.so.6 libtinfo.so.5
3.4初始化,安装成功。
进入mariadb的bin目录执行mysql_secure_installation设置root账号密码
cd /usr/local/mysql/bin
./mysql_secure_installation
或者./mysql_secure_installation --basedir=/usr/local/mysql
##敲回车
y
回车
y
输入两遍123456
删除匿名:y
不允许root远程:n
删除测试数据库:n
刷新表权限:y
mysql -uroot -p'123456'
4.异常断电导致数据库服务无法启动时处理步骤
4.1.在配置文件my.cnf里的[mysqld]下加入参数 innodb_force_recovery = 1 ,其中后面的值设置为1-6,如果1不能恢复,再逐步增加为2/3/4等。直到能启动为止!
注意:最高值为6,但当参数值为4,5,6时,数据库将变为只读模式。
[mysqld]
innodb_force_recovery = 1
4.2.将原有数据备份成sql文件,待会恢复时候要用
启动数据库
systemctl start mariadb
登录数据库
mysql -uroot -p123456
进入数据库安装目录的bin目录下
cd /usr/local/mysql
执行:
./mysqldump -uroot -p123456 --all-databases > /usr/local/alldatabases.sql
4.3关闭数据库,在配置文件/etc/my.cnf的【mysqld】标签下去掉innodb_force_recovery参数,加入skip-grant-tables跳过密码登录,清除已损坏的数据库文件。
关闭数据库
systemctl stop mariadb
备份原data目录以防万一:
cp -r /usr/local/mysql/data/ usr/local/mysql/data_bak/
rm -rf /usr/local/mysql/data/*
修改/etc/my.cnf参数
vi /etc/my.cnf
[mysqld]
##innodb_force_recovery = 6
skip-grant-tables
进入 安装目录下初始化数据库
cd /usr/local/mysql
./scripts/mysql_install_db --user=mysql&
启动数据库
systemctl start mariadb
再次登录数据库
mysql -uroot -p123456
利用之前备份的alldatabases.sql文件恢复数据库
source /usr/local/alldatabases.sql
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)