備份機制:
Wiki後臺mysql數據是使用多實例安裝配置的,主要是優點是能夠按照多個業務做多個實例庫,合理利用系統資源、增強業務擴展。
分庫備份:(此備份方法較適合單數據庫,在單個庫出現問題是隻恢復問題庫。)
命令如下:
mysqldump-u$user -p$password --skip-lock-tables --default-character-set=utf8 -B$DBname>$DBfile
定時任務:(mysql服務器操作)
#添加定時任務,讓系統自動對數據庫進行定時備份。(直接crontab –e 複製粘貼進去即可)
0 0 * * */bin/sh /data/DBscripts/confluence-dump.sh>/data/DBback/confluence/mysqldb.log 2>&1
15 0 * * */bin/sh /data/DBscripts/jira-dump.sh>/data/DBback/confluence/mysqldb.log 2>&1
30 0 * * */bin/sh /data/DBscripts/crowd-dump.sh>/data/DBback/confluence/mysqldb.log 2>&1
0 01 * * */bin/sh /data/DBscripts/backup.sh>>/data/rsync.log
開機啓動項:(mysql服務器操作)
#將啓動命令添加到開啓自啓動內。(mysql安裝詳見《wiki系統安裝配置文檔》)
/data/3306/mysql start
Mysql數據庫配置文件my.cnf (mysql服務器操作)
[client]
port = 3306
socket = /data/3306/mysql.sock
[mysql]
no-auto-rehash
[mysqld]
default-storage-engine=MYISAM
default_table_type=MYISAM
user = mysql
port = 3306
socket = /data/3306/mysql.sock
basedir = /usr/local/mysql
datadir = /data/3306/data
default-character-set=utf8
symbolic-links=0
open_files_limit = 1024
back_log = 600
max_connections = 800
max_connect_errors = 3000
table_cache = 614
external-locking = FALSE
max_allowed_packet =250M
sort_buffer_size = 1M
join_buffer_size = 1M
thread_cache_size = 100
thread_concurrency = 2
query_cache_size = 2M
query_cache_limit = 1M
query_cache_min_res_unit = 2k
#default_table_type = InnoDB
thread_stack = 192K
#transaction_isolation = READ-COMMITTED
tmp_table_size = 2M
max_heap_table_size = 2M
long_query_time = 1
log_long_format
log-error = /data/3306/error.log
log-slow-queries = /data/3306/slow.log
pid-file = /data/3306/mysql.pid
log-bin = /data/3306/mysql-bin
relay-log = /data/3306/relay-bin
relay-log-info-file =/data/3306/relay-log.info
binlog_cache_size = 1M
binlog_format=row
max_binlog_cache_size = 1M
max_binlog_size = 2M
expire_logs_days = 7
key_buffer_size = 16M
read_buffer_size = 1M
read_rnd_buffer_size = 1M
bulk_insert_buffer_size = 1M
myisam_sort_buffer_size = 1M
myisam_max_sort_file_size = 10G
myisam_max_extra_sort_file_size = 10G
myisam_repair_threads = 1
myisam_recover
lower_case_table_names = 1
skip-name-resolve
slave-skip-errors = 1032,1062
replicate-ignore-db=mysql
server-id = 1
#innodb_additional_mem_pool_size = 4M
#innodb_buffer_pool_size = 32M
#innodb_data_file_path =ibdata1:128M:autoextend
#innodb_file_io_threads = 4
#innodb_thread_concurrency = 8
#innodb_flush_log_at_trx_commit = 2
#innodb_log_buffer_size = 2M
#innodb_log_file_size = 4M
#innodb_log_files_in_group = 3
#innodb_max_dirty_pages_pct = 90
#innodb_lock_wait_timeout = 120
#innodb_file_per_table = 0
[mysqldump]
quick
max_allowed_packet = 160M
[mysqld_safe]
log-error=/data/3306/mysql_oldboy3306.err
pid-file=/data/3306/mysqld.pid
單庫備份:(mysql服務器操作)
mysql備份腳本:(該腳本可用在jira、confluence、corwd這3個庫,按照下面提示只要將DBName=“數據庫名”即可)。
#!/bin/bash
##The script is for admin!
##backup mysql database
DBName=confluence (根據數據庫名字可以寫多個庫的腳本)
DBUser=root
DBPath=/data/DBback/confluence
DBLog=/data/DBback/confluence/mysqldb.log
DBSock=/data/3306/mysql.sock
DBMax="--max_allowed_packet=512M"
DBSkip="--skip-lock-tables--default-character-set=utf8"
echo"-------------------------------------------" >> $DBLog
echo $(date +"%y-%m-%d %H:%M:%S")>> $DBLog
echo"---------------------------------------" >> $DBLog
/usr/local/mysql/bin/mysqldump $DBMax -u$DBUser -S $DBSock $DBName $DBSkip -B >$DBPath/confluence_$(date +%F).sql
cd $DBPath
tar zcf confluence_$(date +%F).tar.gz confluence_$(date +%F).sql >/dev/null2>&1
rm -f confluence_$(date +%F).sql\
&& echo "mysqldump confluenceis succeed ">>$DBLog \
|| echo "mysqldump cpmfluence isfail">>$DBLog
#del old files
echo "***************************************">>$DBLog
echo "delete confluence old datafiles" >>$DBLog
echo"*******************************************">>$DBLog
find $DBPath -name "*.tar.gz"-mtime +15 |xargs rm -f \
&& echo "delete 7 days ago oldfile succeed">>$DBLog \
|| echo "delete 7 days ago old filefail" >>$DBLog
Rsync服務拓撲圖:
Rsync腳本:(此爲數據傳輸服務,該配置裏是將備份到本地的數據。Mysql服務器操作)
[root@wikiDB ~]# cat/data/DBscripts/backup.sh
BKlog=/data/rsync.log
cd /data/
echo "thersync-backup at `date +%F`" >>$BKlog
/usr/bin/rsync -avzDBback [email protected]::backup/ --password-file=/etc/rsync.password>>$BKlog
/usr/bin/rsync -avzDBscripts [email protected]::backup/--password-file=/etc/rsync.password >>$BKlog
/usr/bin/rsync -avz/etc/rc.d/rc.local [email protected]::backup/--password-file=/etc/rsync.password >>$BKlog
/usr/bin/rsync -avz/var/spool/cron/root [email protected]::backup/--password-file=/etc/rsync.password >>$BKlog
/usr/bin/rsync -avz/data/3306 [email protected]::backup/ --password-file=/etc/rsync.password>>$BKlog
echo "backupok........!" >>$BKlog
exit 1
定時備份WIKI前端的數據:(WIKI前端操作)
[root@wikiscripts]# crontab -l
*/5 * * * */usr/sbin/ntpdate time.windows.com >/dev/null 2>&1
00 0 * * * /bin/sh/data/backup/scripts/jiradata.sh >/dev/null2>&1
15 0 * * * /bin/sh/data/backup/scripts/wikidata.sh >/dev/null 2>&1
30 0 * * * /bin/sh/data/backup/scripts/del-oldfile.sh >/dev/null 2>&1
總結:將所有備份文件推送到10.168.0.182上,定時保留該服務器的鏡像。同時在mysql數據庫上啓用samba服務,定時拉取備份文件。