標籤:tor inno server toe mysql資料庫 init.d 排錯 授權 relay
本文為我學習老男孩老師MySQL DBA進階營運的學習筆記,菜鳥一個如果有寫的不對的地方,請各位大神多多指點,小弟我會非常感謝。呵呵~
7.6.1 MySQL多執行個體常見配置方案
6.1.1 多執行個體設定檔部署方案
通過配置多個設定檔及多個啟動程式來實現多執行個體的方案
[[email protected] ~]# tree -L 2 /data//data/├── 3306│ ├── data│ ├── my.cnf│ └── mysql└── 3307├── data├── my.cnf└── mysql
原則:降低耦合性
6.2 安裝多執行個體MySQL資料庫
6.2.1 建立MySQL多執行個體的資料檔案目錄
MySQL的安裝上篇已經寫了,這裡就不再安裝了。我們的資料檔案目錄採用的是/data目錄作為mysql多執行個體總的根目錄,然後規劃不同的MySQL執行個體連接埠號碼來作為/data下面的二級目錄,不同的連接埠號碼就是不同的執行個體目錄以區別不同的執行個體,二級目錄下包含mysql資料檔案、設定檔以及開機檔案的目錄。
(1) 建立相關mysql多執行個體的目錄 如下
#####我們先把安裝的單一實例mysql停掉,要不然會衝突[[email protected] ~]# pkill mysqld#####然後把之前安裝的單一實例mysql的開機檔案刪掉,以後就不用這個方法啟動了[[email protected] ~]# rm -f /etc/init.d/mysqld提示:多執行個體mysql的安裝和單一實例mysql的安裝在make && make install之後就不同了。#####建立多執行個體目錄,我們這裡建立兩個執行個體,如果想建立3個、4個同理往下增加即可。[[email protected] ~]# mkdir -p /data/{3306,33307}/data[[email protected] ~]# tree /data//data/? 總的多執行個體根目錄├── 3306 3306執行個體的目錄│ └── data 3306執行個體的資料檔案目錄└── 33307 3307執行個體的目錄└── data 3307執行個體的資料檔案目錄4 directories, 0 files
6.2.2 建立MySQL多執行個體的設定檔
MySQL資料庫預設為使用者提供了多個設定檔範本,使用者可以根據硬體設定大小來選擇
[[email protected] mysql-5.5.32]# ls -l support-files/*.cnf-rw-r--r--. 1 root root 4723 1月 11 05:31 support-files/my-huge.cnf-rw-r--r--. 1 root root 19791 1月 11 05:31 support-files/my-innodb-heavy-4G.cnf-rw-r--r--. 1 root root 4697 1月 11 05:31 support-files/my-large.cnf-rw-r--r--. 1 root root 4708 1月 11 05:31 support-files/my-medium.cnf-rw-r--r--. 1 root root 2872 1月 11 05:31 support-files/my-small.cnf
上面是單一實例的設定檔的預設設定檔範本,配置多執行個體就不同了為了保證多執行個體之間彼此獨立。因此,我們為每一個執行個體建立一個設定檔,一個開機檔案,對應自己的資料檔案。
在實際工作中可以拿早已修改好的模板來進行修改,通過rz命令等方式上傳設定檔範本my.cnf檔案。
我們在mysql安裝包目錄拷貝一個資料庫檔案重新命名為my.cnf,然後將my.cnf內容清空,添加下面內容。下面是3306的設定檔,3307的設定檔要把my.cnf中的3306替換成3307,注意3307中的server-id值一定要修改不能3306中的server-id一樣。
[[email protected] ~]# cp /home/zbf/mysql-5.5.32/support-files/my-small.cnf /data/3306/my.cnf[[email protected] 3306]# > my.cnf[[email protected] 3306]# vim my.cnf 1 [client] 2 port= 3306 3 socket = /data/3306/mysql.sock 4 [mysql] 5 no-auto-rehash 6 [mysqld] 7 user= mysql 8 port= 3306 9 socket = /data/3306/mysql.sock 10 basedir = /usr/local/mysql 11 datadir = /data/3306/data 12 open_files_limit= 1024 13 back_log = 600 14 max_connections = 800 15 max_connect_errors = 3000 16 table_cache = 614 17 external-locking = FALSE 18 max_allowed_packet =8M 19 sort_buffer_size = 1M 20 join_buffer_size = 1M 21 thread_cache_size = 100 22 thread_concurrency = 2 23 query_cache_size = 2M 24 query_cache_limit = 1M 25 query_cache_min_res_unit = 2k 26 #default_table_type = InnoDB 27 thread_stack = 192K #transaction_isolation = READ-COMMITTED 29 tmp_table_size = 2M 30 max_heap_table_size = 2M 31 long_query_time = 1 32 #log_long_format 33 #log-error = /data/3306/error.log 34 #log-slow-queries = /data/3306/slow.log 35 pid-file = /data/3306/mysql.pid 36 log-bin = /data/3306/mysql-bin 37 relay-log = /data/3306/relay-bin 38 relay-log-info-file = /data/3306/relay-log.info 39 binlog_cache_size = 1M 40 max_binlog_cache_size = 1M 41 max_binlog_size = 2M 42 expire_logs_days = 7 43 key_buffer_size = 16M 44 read_buffer_size = 1M 45 read_rnd_buffer_size = 1M 46 bulk_insert_buffer_size = 1M 47 #InnoDB_sort_buffer_size = 1M 48 #InnoDB_max_sort_file_size = 10G 49 #InnoDB_max_extra_sort_file_size = 10G 50 #InnoDB_repair_threads = 1 51 #InnoDB_recover 52 lower_case_table_names = 1 53 skip-name-resolve 54 slave-skip-errors = 1032,1062 55 replicate-ignore-db=mysql 56 server-id = 1 57 innodb_additional_mem_pool_size = 4M 58 innodb_buffer_pool_size = 32M 59 innodb_data_file_path = ibdata1:128M:autoextend 60 innodb_file_io_threads = 4 61 innodb_thread_concurrency = 8 62 innodb_flush_log_at_trx_commit = 2 63 innodb_log_buffer_size = 2M 64 innodb_log_file_size = 4M 65 innodb_log_files_in_group = 3 66 innodb_max_dirty_pages_pct = 90 67 innodb_lock_wait_timeout = 120 68 innodb_file_per_table = 0 69 [mysqldump] 70 quick 71 max_allowed_packet = 2M [mysqld_safe] 73 log-error=/data/3306/mysql_zbf3306.err 74 pid-file=/data/3306/mysqld.pid
6.2.3 建立開機檔案
下面是3306執行個體的設定檔,配置3307執行個體的設定檔只需要把3306執行個體設定檔中的3306替換成3307。
#!/bin/bashcmdPath="/usr/local/mysql/bin"myPath="/data/3306"softPath="/usr/local/mysql"socketfile="$myPath/mysql.sock"my_user="root"my_pass="123456" 資料庫設定的密碼是多少這裡就填多少start(){if [ ! -e "$socketfile" ];thenprintf "Starting MySQL......\n"/bin/sh ${cmdPath}/mysqld_safe --defaults-file=${myPath}/my.cnf --user=mysql --basedir=${softPath} --datadir=${myPath}/data &>/dev/null &sleep 2 elseprintf "Mysqld is running....\n" && exit 1 fi}stop(){ if [ ! -e "$socketfile" ];thenprintf "MySQL is stopped...\n" exit 1 else printf "Stoping MySQL....\n" mysqladmin -u"${my_user}" -p"${my_pass}" -S "$socketfile" shutdown fi}restart(){ printf "Restarting MySQL...\n"stop sleep 2start} case "$1" in start)start ;; stop)stop ;; restart)restart ;; *)printf "Usage: $myPath/mysql {start|stop|restart}\n"exit 1esac
###最終如下
[[email protected] ~]# tree /data/data├── 3306│ ├── data│ ├── my.cnf 3306執行個體的設定檔│ └── mysql 3306執行個體的開機檔案└── 3307├── data├── my.cnf 3307執行個體的設定檔└── mysql 3307執行個體的開機檔案
###多執行個體開機檔案啟動mysql服務實質
mysql_safe --defaults-file=/data/3306/my.cnf 2>&1 > /dev/null &mysql_safe --defaults-file=/data/3307/my.cnf 2>&1 > /dev/null &
###多執行個體開機檔案的平滑停止mysql服務實質
mysqladmin -u root -p123456 -S /data/3306/mysql.sock shutdownmysqladmin -u root -p123456 -S /data/3307/mysql.sock shutdown
6.2.4 授權使用者和組管理整個多執行個體目錄/data
[[email protected] ~]# chown -R mysql.mysql /data[[email protected] ~]# find /data -name mysql/data/3306/mysql/data/3307/mysql
6.2.5 授權mysql多執行個體服務所有開機檔案mysql可執行
[[email protected] ~]# find /data -type f -name "mysql"|xargs ls -l-rw-r--r--. 1 mysql mysql 1604 1月 12 17:06 /data/3306/mysql-rw-r--r--. 1 mysql mysql 1604 1月 12 17:06 /data/3307/mysql[[email protected] ~]# find /data -type f -name "mysql"|xargs chmod +x[[email protected] ~]# find /data -type f -name "mysql"|xargs ls -l-rwxr-xr-x. 1 mysql mysql 1604 1月 12 17:06 /data/3306/mysql-rwxr-xr-x. 1 mysql mysql 1604 1月 12 17:06 /data/3307/mysql
6.2.6 配置MySQL命令全域使用路徑
前面cmake安裝mysql的時候已經配過了,這裡就不配了。配完全域變數使用mysql命令就能找到了。
[[email protected] ~]# tail -1 /etc/profileexport PATH=/usr/local/mysql/bin:$PATH
6.2.7 初始化MySQL多執行個體的資料庫檔案
(1)初始化命令
###mysql5.1.X初始化命令
mysql_install_db --basedir=/usr/local/mysql/ --datadir=/data/3307/data/ --user=mysqlmysql_install_db --basedir=/usr/local/mysql/ --datadir=/data/3307/data/ --user=mysql
###mysql5.5.32初始化命令
[[email protected] ~]# cd /home/zbf/mysql-5.5.32/scripts/
要在scripts下執行,不在mysql bin下。注意要在目前的目錄下執行加 ./。
./mysql_install_db --basedir=/usr/local/mysql/ --datadir=/data/3306/data/ --user=mysql./mysql_install_db --basedir=/usr/local/mysql/ --datadir=/data/3307/data/ --user=mysql
(2)為什麼要初始化資料庫?
a. 初始化的主要目的就是建立基礎的資料庫檔案,例如產生mysql庫表。
b. 初始化後可以查看對應的執行個體資料庫目錄,可以看到如下檔案。
6.2.8 啟動mysql服務
/data/3306/mysql start/data/3307/mysql start
6.2.9 MySQL故障排錯多執行個體資料庫
如果mysql沒有起來排查方法如下
(1)如果發現沒有顯示MySQL的連接埠,請等待幾秒mysql服務啟動會有點慢。
(2)如果還是不行,請查看錯誤記錄檔,錯誤記錄檔路徑在my.cnf設定檔路徑下面。
grep log-error /data/3306/mysql_zbf3306.err|tail -1
(3)細看所有執行命令返回的輸出,不要忽略關鍵的輸出結果。
(4)查看系統的/var/log/messages。
(5)如果是關聯服務,要同時查看相關服務的LOG。
6.2.10 Mysql多執行個體登入
Mysql安裝完成後,預設情況下管理員帳號root是無密碼的。登入不同的mysql資料庫需要指定不同庫的sock路徑。如果是遠端話就指定IP地址。
[[email protected] ~]# mysql -S /data/3306/mysql.sock [[email protected] ~]# mysql -S /data/3307/mysql.sock
6.3 MySQL安全配置
6.3.1 為root增加密碼
mysqladmin -u root -S /data/3306/mysql.sock password ‘123456‘mysqladmin -u root -S /data/3307/mysql.sock password ‘123456‘
###設定完資料路密碼登入資料庫的方法
[[email protected] 3306]# mysql -uroot -p123456 -S /data/3306/mysql.sock[[email protected] 3306]# mysql -uroot -p123456 -S /data/3307/mysql.sock
6.3.2 為mysql多執行個體啟動指令碼修改執行許可權,只允許root使用者有執行許可權
[[email protected] ~]# find /data -type f -name "mysql" -exec ls -l {} \;-rwxr-xr-x 1 mysql mysql 1252 1月 15 02:18 /data/3306/mysql-rwxr-xr-x 1 mysql mysql 1252 1月 15 04:45 /data/3307/mysql[[email protected] ~]# find /data -type f -name "mysql" -exec chmod 700 {} \;[[email protected] ~]# find /data -type f -name "mysql" -exec chown 700 {} \;[[email protected] ~]# find /data -type f -name "mysql" -exec ls -l {} \;-rwx------ 1 root root 1252 1月 15 02:18 /data/3306/mysql-rwx------ 1 root root 1252 1月 15 04:45 /data/3307/mysql
Mysql DBA 進階營運學習筆記-Mysql常見多執行個體配置方案及多執行個體安裝