MariaDB主從配置及備份恢復管理

一、主節點配置:
yum install mariadb-server.x86_64 -y#安裝數據庫
service mariadb start#啓動數據庫
mysql -uroot -p123456#登陸數據庫
建立從節點鏈接登陸用戶
create user 'repl'@'192.168.2.%' identified by 'repl';
給用戶受權
grant replication slave on *.* to 'repl'@'192.168.2.%' identified by 'repl'; mysql

vim /etc/my.cnf
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
server-id=1
log-bin=/var/lib/mysql/mysql-bin
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemdsql

[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid數據庫


#
# include all files from the config directory
#
!includedir /etc/my.cnf.dvim

重啓數據庫
service mariadb restart
進入數據庫
mysql -uroot -p123456
查看服務器id是否生效
MariaDB [(none)]> show variables like 'server_id';安全

二、從節點配置:
yum install mariadb-server.x86_64 -y#安裝數據庫
service mariadb start#啓動數據庫
mysql -uroot -p123456#登陸數據庫bash

--------------------------------------------------------------
vim /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
server-id=2
relay-log=/var/lib/mysql/relay-bin
relay-log-index=/var/lib/mysql/relay-bin.index
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd服務器

[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pidsocket

#
# include all files from the config directory
#
!includedir /etc/my.cnf.dide

-------------------------------------------------------------------------spa

重啓數據庫
service mariadb restart
進入數據庫
mysql -uroot -p123456
查看服務器id是否生效
MariaDB [(none)]> show variables like 'server_id';
重置從節點設置
MariaDB [(none)]> reset slave;
配置從節點鏈接信息
MariaDB [(none)]> change master to master_host='192.168.2.121',master_port=3306,master_user='repl',master_password='repl',master_log_file='mysql-bin.000001',master_log_pos=0;
啓動從節點鏈接
MariaDB [(none)]> start slave;
查看從節點運行狀態
MariaDB [(none)]> show slave status\G
-------------------------------------------------------------------------
數據庫備份:
備份全部數據庫
mysqldump -uroot -p'root' --all-databases > /home/mysqlbak/mysql_bak_$(date "+%Y-%m-%d").sql
備份指定數據庫:
mysqldump -uroot -p'root' --databases mytest mytest1 > /home/dblogs/mysqlbak/mysql_bak_$(date "+%Y-%m-%d").sql
導出指定表數據
mysqldump -uroot -p'root' --databases mytest --tables test1 > /home/dblogs/mysqlbak/mysql_bak_$(date "+%Y-%m-%d").sql
mysqldump -uroot -p'root' --databases mytest --tables test1 --where='id=1' > /home/dblogs/mysqlbak/mysql_bak_$(date "+%Y-%m-%d").sql
導出表結構
mysqldump -uroot -p'root' --no-data --databases mytest > /home/dblogs/mysqlbak/mysql_bak_$(date "+%Y-%m-%d").sql
將h1服務器中的db1數據庫的全部數據導入到h2中的db2數據庫中,db2的數據庫必須存在不然會報錯,-C壓縮傳輸
mysqldump --host=h1 -uroot -proot -C --databases db1 |mysql --host=h2 -uroot -proot db2
-----------------------------------------------------------------------------

備份數據恢復:

全量恢復
cd /home/dblogs/backup/full/
tar zxvf /home/dblogs/backup/20180726.sql.tgz -C .
mysql -uroot -p -v < 20180726.sql
在全量恢復基礎上作增量恢復
mysqlbinlog --no-defaults mysql-bin.000036 mysql-bin.000038 |mysql -uroot -plove1990

查看二進制文件,查找恢復點
mysqlbinlog --no-defaults --base64-output=decode-rows -v mysql-bin.000036
結束恢復點
mysqlbinlog --no-defaults --stop-position='344' mysql-bin.000039 |mysql -uroot -plove1990
開始恢復點
mysqlbinlog --no-defaults --stop-position='852' mysql-bin.000039 |mysql -uroot -plove1990
--------------------------------------------------------------------
數據庫自動備份
建立目錄
mkdir -p /home/dblogs/backup/{daily,full}
chown -R mysql.mysql /home/dblogs
修改配置文件,開啓binlog
vi /etc/my.cnf
log_bin = "/home/dblogs/mysql-bin"
binlog_format = ROW
expire_logs_days = 30 #日誌保存時間

製做天天備份腳本
vi backup/dailybak.sh

#!/bin/bash
export LANG=en_US.UTF-8
BakDir=/home/dblogs/backup/daily
BinDir=/home/dblogs
LogFile=/home/dblogs/backup/daily/back.log
BinFile=/home/dblogs/mysql-bin.index
mysqladmin -uroot -plove1990 flush-logs
#這個是用於產生新的mysql-bin.00000*文件
Counter=`wc -l $BinFile |awk '{print $1}'`
NextNum=0
#這個for循環用於比對$Counter,$NextNum這兩個值來肯定文件是否是存在或最新的。
for file in `cat $BinFile`
do
  base=$(basename $file)
  #basename用於截取mysql-bin.00000*文件名,去掉./mysql-bin.000005前面的./
  NextNum=`expr $NextNum + 1`
    if [ $NextNum -gt $Counter ]
    then
        echo $base skip! >> $LogFile
    else
        dest=$BakDir/$base
        if test -e $dest
        then
          echo $base exit! >> $LogFile
        else
          cp $BinDir/$base $BakDir
          echo $base copying >> $LogFile
        fi
    fi
done
echo `date +"%Y年%m月%d日 %H:%M:%S"` Bakup succ! >> $LogFile

製做全量備份腳本
vi backup/fullbak.sh

#!/bin/bash
export LANG=en_US.UTF-8
Dailydir=/home/dblogs/backup/daily
BakDir=/home/dblogs/backup/full
LogFile=/home/dblogs/backup/full/back.log
Date=`date +%Y%m%d`
Begin=`date +"%Y年%m月%d日_%H:%M:%S"`
cd $BakDir
DumpFile=$Date.sql
GZDumpFile=$Date.sql.tgz
mysqldump -uroot -plove1990 --all-databases --flush-logs --delete-master-logs --single-transaction > $DumpFile

tar -czf $GZDumpFile $DumpFile
rm $DumpFile

count=$(ls -l *.tgz |wc -l)
if [ $count -ge 5 ]
  then
    file=$(ls -l *.tgz |awk '{print $9}'|awk 'NR==1')
    rm -f $file
fi
#保留過去四周全量備份數據

Last=`date +"%Y年%m月%d日 %H:%M:%S"`
echo 開始:$Begin 結束:$Last $GZDumpFile succ >> $LogFile
cd $Dailydir
rm -f *

增長定時任務,週一到週六凌晨2點增量備份,週日凌晨2點全量備份
crontab -e
0 2 * * 1-6 /home/dblogs/backup/dailybak.sh > /dev/null 2>&1
0 2 * * 0 /home/dblogs/backup/fullbak.sh > /dev/null 2>&1

經常使用命令:

查看庫啓動日誌cat /var/log/mariadb/mariadb.logmysql -V#查看版本grant all privileges on *.* to zabbix@localhost identified by 'zabbix';#爲用戶受權rpm -ql mariadb-server#查看安裝文件ss -ntl#查看端口運行狀態,3306端口ss -utlnpservice mariadb start#啓動mysqlmysql -u [用戶名] -p -h [遠程主機地址]#鏈接到數據mysql -urepl -prepl -h192.168.2.121#遠程登陸數據庫show databases;#查看數據庫use mysql#進入數據庫mysql_secure_installation#執行安全加固腳本mysql -uroot -p12345678 < test.sql#執行腳本MariaDB [(none)]> source /root/test.sql#執行腳本show databases;#顯示數據庫create table user(id int,name varchar(20),age int);#建立表insert into user(id,name,age) values(1,'trent',20);#向表中插入數據create table test(id int) engine=myisam;#建立表指定引擎show create table user;#查看數據表用的引擎cat /etc/my.cnf#查看數據庫配置MariaDB [mysql]> select user,host from user;#用戶及登陸範圍設置grant replication slave on *.* to 'repl'@'192.168.2.%' identified by 'repl'; #配置用戶遠程鏈接數據庫show variables like 'max_connections';set global max_connections=1000;flush privileges;#刷新權限設置

相關文章
相關標籤/搜索