服務搭建與管理(3)

  1. 服務器
    192.168.9.38 work-1
    192.168.9.39 work-2
  2. 添加普通用戶
    2.1 創建用戶文件夾

[root@work-1 ~]# mkdir /app/userhome -p
[root@work-1 ~]# useradd panp -d /app/userhome/panp

useradd(選項)(參數)
c<備註>:加上備註文字。備註文字會保存在passwd的備註欄位中;
d<登入目錄>:指定用戶登入時的啓始目錄;
D:變更預設值;
e<有效期限>:指定帳號的有效期限;
f<緩衝天數>:指定在密碼過期後多少天即關閉該帳號;
g<羣組>:指定用戶所屬的羣組;
G<羣組>:指定用戶所屬的附加羣組;
m:自動建立用戶的登入目錄;
M:不要自動建立用戶的登入目錄;
n:取消建立以用戶名稱爲名的羣組;
r:建立系統帳號;
s<shell>:指定用戶登入後所使用的shell;
u<uid>:指定用戶id。

2.2 連同用戶的家目錄一起刪除

[root@work-1 ~]# userdel -r panp

2.3 創建密鑰(用於我們去訪問別人)

[root@work-1 ~]# mkdir /app/userhome/panp/.ssh
[root@work-1 ~]# chown panp.panp /app/userhome/panp/.ssh -R
[root@work-1 ~]# chmod 700 /app/userhome/panp/.ssh
[root@work-1 ~]# su -c "ssh-keygen -t rsa -P '' -f ~/.ssh/panp" panp

2.4創建認證(用於別人來訪問我們)

[root@work-1 ~]# vim /app/userhome/panp/.ssh/authorized_keys
[root@work-1 ~]# chown panp.panp /app/userhome/panp/.ssh/authorized_keys
[root@work-1 ~]# chmod 600 /app/userhome/panp/.ssh/authorized_keys

2.5 創建用戶腳本

#!/bin/bash
#author:xxx
#create_time:xxx
#mode_time:xxx
#version:1.0
#aim: create user

user_home=/app/userhome

check() {
        if [ ! -d $user_home ]
                then
                        mkdir $user_home -p
        fi
}

user_add() {
        useradd $1 -d $user_home/$1
        mkdir $user_home/$1/.ssh -p
        chown $1:$1 $user_home/$1/.ssh -R
        chmod 700 $user_home/$1/.ssh
        su -c "ssh-keygen -t rsa -P '' -f $user_home/$1/.ssh/$1" $1

        touch $user_home/$1/.ssh/authorized_keys
        chown $1:$1 $user_home/$1/.ssh/authorized_keys
        chmod 600 $user_home/$1/.ssh/authorized_keys
}

main() {
        check
        user_add  'panp'
        echo -e "\033[43m\033[05m[Do not forget to revise authorized_keys]\033[0m"
}

main

3.mysql數據庫
3.1 安裝mysql-5.7.19,此處不要忘記更改sever-id

#!/bin/bash
#author:pan
#二進制安裝mysql5.7.19

tar xvf mysql-5.7.19-linux-glibc2.12-x86_64.tar.gz
mv mysql-5.7.19-linux-glibc2.12-x86_64 /app/mysql5.7
mkdir /app/mysql5.7/data /app/mysql5.7/binlogs
useradd -M -s /sbin/nologin mysql
chown -R mysql.mysql /app/mysql5.7
ln -s /app/mysql5.7/bin/* /usr/bin/
rm -f /etc/my.cnf
cat > /etc/my.cnf << EOF
[client]
port= 2297
socket= /app/mysql5.7/mysql.sock

[mysql]
prompt="\u@mysqldb \R:\m:\s [\d]> "
no-auto-rehash

[mysqld]
user= mysql
port= 2297
basedir= /app/mysql5.7
datadir=  /app/mysql5.7/data
socket= /app/mysql5.7/mysql.sock
sql_mode = 
pid-file = mysqldb.pid
lower_case_table_names=1
character-set-server = utf8mb4
skip_name_resolve = 1
open_files_limit    = 65535
back_log = 1024
max_connections = 512
max_connect_errors = 1000000
table_open_cache = 1024
table_definition_cache = 1024
table_open_cache_instances = 64
thread_stack = 512K
external-locking = FALSE
max_allowed_packet = 32M
sort_buffer_size = 4M
join_buffer_size = 4M
thread_cache_size = 768
query_cache_size = 0
query_cache_type = 0
interactive_timeout = 600
wait_timeout = 600
tmp_table_size = 32M
max_heap_table_size = 32M
slow_query_log = 1
slow_query_log_file =  /app/mysql5.7/slow.log
log-error = /app/mysql5.7/error.log
long_query_time = 0.1
log_queries_not_using_indexes =1
log_throttle_queries_not_using_indexes = 60
min_examined_row_limit = 100
log_slow_admin_statements = 1
log_slow_slave_statements = 1
server-id = 202297
log-bin =  /app/mysql5.7/binlogs/mysql-bin
sync_binlog = 1
binlog_cache_size = 4M
max_binlog_cache_size = 2G
max_binlog_size = 1G
expire_logs_days = 7
master_info_repository = TABLE
relay_log_info_repository = TABLE
gtid_mode = on
enforce_gtid_consistency = 1
log_slave_updates
binlog_format = row
binlog_checksum = 1
relay_log_recovery = 1
relay-log-purge = 1
key_buffer_size = 32M
read_buffer_size = 8M
read_rnd_buffer_size = 4M
bulk_insert_buffer_size = 64M
myisam_sort_buffer_size = 128M
myisam_max_sort_file_size = 10G
myisam_repair_threads = 1
lock_wait_timeout = 3600
explicit_defaults_for_timestamp = 1
innodb_thread_concurrency = 0
innodb_sync_spin_loops = 100
innodb_spin_wait_delay = 30

transaction_isolation = REPEATABLE-READ
#innodb_additional_mem_pool_size = 16M
innodb_buffer_pool_size = 5168M
innodb_buffer_pool_instances = 8
innodb_buffer_pool_load_at_startup = 1
innodb_buffer_pool_dump_at_shutdown = 1
innodb_data_file_path = ibdata1:1G:autoextend
innodb_flush_log_at_trx_commit = 1
innodb_log_buffer_size = 32M
innodb_log_file_size = 2G
innodb_log_files_in_group = 2
innodb_max_undo_log_size = 4G

#根據您的服務器IOPS能力適當調整
#一般配普通SSD盤的話,可以調整到 10000 - 20000
#配置高端PCIe SSD卡的話,則可以調整的更高,比如 50000 - 80000
innodb_io_capacity = 4000
innodb_io_capacity_max = 8000
innodb_flush_neighbors = 0
innodb_write_io_threads = 8
innodb_read_io_threads = 8
innodb_purge_threads = 4
innodb_page_cleaners = 4
innodb_open_files = 65535
innodb_max_dirty_pages_pct = 50
innodb_flush_method = O_DIRECT
innodb_lru_scan_depth = 4000
innodb_checksums = 1
innodb_checksum_algorithm = crc32
#innodb_file_format = Barracuda
#innodb_file_format_max = Barracuda
innodb_lock_wait_timeout = 10
innodb_rollback_on_timeout = 1
innodb_print_all_deadlocks = 1
innodb_file_per_table = 1
innodb_online_alter_log_max_size = 4G
internal_tmp_disk_storage_engine = InnoDB
innodb_stats_on_metadata = 0

innodb_status_file = 1
#注意: 開啓 innodb_status_output & innodb_status_output_locks 後, 可能會導致log-error文件增長較快
innodb_status_output = 0
innodb_status_output_locks = 0

#performance_schema
performance_schema = 1
performance_schema_instrument = '%=on'

#innodb monitor
innodb_monitor_enable="module_innodb"
innodb_monitor_enable="module_server"
innodb_monitor_enable="module_dml"
innodb_monitor_enable="module_ddl"
innodb_monitor_enable="module_trx"
innodb_monitor_enable="module_os"
innodb_monitor_enable="module_purge"
innodb_monitor_enable="module_log"
innodb_monitor_enable="module_lock"
innodb_monitor_enable="module_buffer"
innodb_monitor_enable="module_index"
innodb_monitor_enable="module_ibuf_system"
innodb_monitor_enable="module_buffer_page"
innodb_monitor_enable="module_adaptive_hash"

[mysqldump]
quick
max_allowed_packet = 32M
EOF
mysqld --initialize --user=mysql --basedir=/app/mysql5.7 --datadir=/app/mysql5.7/data

#grep 'temporary password' /app/mysql5.7/error.log
#ALTER USER 'root'@'localhost' IDENTIFIED BY '000000';

3.2 啓動mysql,主庫創建主從複製賬號,上面不要忘記更改sever-id

[root@work-1 scripts]# sh -x mysql_install.sh
[root@work-1 scripts]# mysqld_safe --defaults-file=/etc/my.cnf &
[root@work-1 scripts]# ps aux|grep mysql
[root@work-1 scripts]# grep 'temporary password' /app/mysql5.7/error.log
[root@work-1 scripts]# mysql -S /app/mysql5.7/mysql.sock -p

(unknown)@mysqldb 03:36:  [(none)]> ALTER USER 'root'@'localhost' IDENTIFIED BY '000000';

root@mysqldb 03:37:  [(none)]> grant replication slave on *.* to rep@'192.168.9.%' identified by '000000';
Query OK, 0 rows affected, 1 warning (0.00 sec)

root@mysqldb 03:39:  [(none)]> show grants for rep@'192.168.9.%' ;
+-------------------------------------------------------+
| Grants for [email protected].%                            |
+-------------------------------------------------------+
| GRANT REPLICATION SLAVE ON *.* TO 'rep'@'192.168.9.%' |
+-------------------------------------------------------+
1 row in set (0.00 sec)

root@mysqldb 03:39:  [(none)]> flush privileges;
Query OK, 0 rows affected (0.01 sec)

root@mysqldb 03:40:  [(none)]> select user,host,authentication_string from mysql.user;
+---------------+-------------+-------------------------------------------+
| user          | host        | authentication_string                     |
+---------------+-------------+-------------------------------------------+
| root          | localhost   | *032197AE5731D4664921A6CCAC7CFCE6A0698693 |
| mysql.session | localhost   | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| mysql.sys     | localhost   | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| rep           | 192.168.9.% | *032197AE5731D4664921A6CCAC7CFCE6A0698693 |
+---------------+-------------+-------------------------------------------+
4 rows in set (0.00 sec)

3.3 搭建主從複製,從庫進行主從同步,上面不要忘記更改sever-id

root@mysqldb 04:23:  [(none)]> change master to master_host='192.168.9.38',master_user='rep',master_password='000000',master_port=2297,master_auto_position=1;
Query OK, 0 rows affected, 2 warnings (0.12 sec)

root@mysqldb 04:42:  [(none)]> start slave;
Query OK, 0 rows affected (0.00 sec)

root@mysqldb 04:42:  [(none)]> show slave status\G
  1. mysql數據庫管理命令
啓動mysql
[root@work-1 mysql5.7]# mysqld_safe --defaults-file=/etc/my.cnf &

關閉mysql
[root@work-1 mysql5.7]# mysqladmin -S /app/mysql5.7/mysql.sock -p shutdown
Enter password: 

打開mysql
[root@work-1 mysql5.7]# mysql -S /app/mysql5.7/mysql.sock -p
Enter password
  1. mysql備份與恢復

備份
mysqldump說明書: https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html
[root@work-1 mysql_backup]# /app/mysql5.7/bin/mysqldump --default-character-set=utf8 -R -E -B --single-transaction --master-data=2 -uroot -p'000000' -h localhost -P2297 panp --set-gtid-purged=OFF |gzip > /app/mysql_backup/$(date +%F-%H-%M)_panp.sql.gz
解壓
[root@work-1 mysql_backup]# gzip -d 2018-10-08-06-24_panp.sql.gz
恢復
[root@work-1 app]# mysql -S /app/mysql5.7/mysql.sock -p000000 < 2018-10-08-06-24_panp.sql

6.數據庫備份腳本

#!/bin/bash
#author:xxx
#create_time=xxx
#mode_time=xxx
#aim: backup mysql

backup_dir=/app/mysql_backup

check() {
        if [ ! -d $backup_dir ]
                then
                        mkdir $backup_dir -p
        fi
}

mysql_backup() {
         /app/mysql5.7/bin/mysqldump --default-character-set=utf8 -R -E -B --single-transaction --master-data=2 -uroot -p'000000' -h localhost -P2297 $1 --set-gtid-purged=OFF | gzip > $backup_dir/$(date +%F-%H-%M)_${1}.sql.gz
}

clean() {
        find $backup_dir -type f -mtime +30 -name "*_${1}.sql.gz" -exec rm -f {} \;
}

main () {
        check
        mysql_backup panp
        clean
}

main

7.放在定時任務執行

[root@work-1 scripts]# crontab -l
*/5 * * * * /usr/bin/bash /app/scripts/mysql_backup.sh &> /dev/null
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章