一、所需軟體 二、安裝說明 三、安裝 1、下載yum源。 官網地址:http://dev.mysql.com/downloads/repo/yum/ centos7系統: wget http://dev.mysql.com/get/mysql57-community-release-el7-7.no ...
一、所需軟體
軟體名稱 | 版本 | 下載地址 | 當前環境 | 管理員賬號/密碼 |
---|---|---|---|---|
mysql | 5.6 | yum安裝 | centOS6.7系統 | zxfly/zxfly |
二、安裝說明
資料庫所在目錄 | /database/mysql | 新建目錄mysql |
---|---|---|
sock文件路徑 | /var/lib/mysql/mysql.sock | 自動生成 |
配置文件路徑 | /etc/my.cnf | |
慢查詢日誌路徑 | /var/log/mysql/mysql_slow_query.log | 新建mysql日誌目錄 |
錯誤日誌路徑 | /var/log/mysql/mysqld.log | |
pid文件 | /var/run/mysqld/mysqld.pid | 自動生成 |
binlog日誌文件 | /database/mysql-bin/mysql_bin*.log | 新建目錄mysql-bin |
三、安裝
1、下載yum源。
官網地址:http://dev.mysql.com/downloads/repo/yum/
centos7系統:
wget http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm
centos6系統:
wget http://dev.mysql.com/get/mysql57-community-release-el6-7.noarch.rpm
2、安裝rpm
rpm -Uvh mysql57-community-release-el6-7.noarch.rpm
3、修改yum源配置
vim /etc/yum.repos.d/mysql-community.repo
安裝mysql5.6操作
1、將enabled=1更改為enabled=0
2、將enabled=0更改為enabled=1
如圖:
4、安裝mysql
yum install mysql-community-server
5、替換配置文件
主庫配置文件:
1 [mysqld] 2 user=mysql 3 datadir=/database/mysql 4 socket=/var/lib/mysql/mysql.sock 5 6 skip-name-resolve 7 8 # Disabling symbolic-links is recommended to prevent assorted security risks 9 symbolic-links=0 10 11 #slow_queries 12 slow_query_log_file = /var/log/mysql/mysql_slow_query.log 13 long_query_time=1 14 slow_query_log=1 15 #binlog 16 server-id=77 17 log_bin=/database/mysql-bin/mysql_bin 18 binlog_format=mixed 19 expire_logs_days=7 20 21 #innodb 22 innodb_buffer_pool_size=104G 23 innodb_log_file_size=512M 24 innodb_log_buffer_size = 8M 25 innodb_flush_log_at_trx_commit=2 26 innodb_file_per_table=1 27 innodb_file_io_threads=4 28 innodb_flush_method=O_DIRECT 29 innodb_io_capacity=2000 30 innodb_io_capacity_max=6000 31 innodb_lru_scan_depth=2000 32 innodb_thread_concurrency = 0 33 34 #cache 35 ##內部記憶體臨時表的最大值 36 tmp_table_size=2G 37 character-set-server=utf8 38 collation-server=utf8_general_ci 39 ##即跳過外部鎖定 40 skip-external-locking 41 ##MySQL能暫存的連接數量(根據實際設置) 42 back_log=1024 43 ##指定索引緩衝區的大小,只對MyISAM表起作用,這裡寫上也沒有關係 44 key_buffer_size=1024M 45 ##這條指令限定用於每個資料庫線程的棧大小 46 thread_stack=256k 47 ##當一個查詢不斷地掃描某一個表,MySQL會為它分配一段記憶體緩衝區 48 read_buffer_size=8M 49 ##線程緩存 50 thread_cache_size=64 51 ##查詢緩存大小 52 query_cache_size=128M 53 ##內部記憶體臨時表的最大值,每個線程都要分配 54 max_heap_table_size=256M 55 ##將查詢結果放入查詢緩存中 56 query_cache_type=1 57 ##代表在事務過程中容納二進位日誌SQL語句的緩存大小 58 binlog_cache_size = 2M 59 ##同樣是緩存表大小 60 table_open_cache=128 61 ##緩存線程 62 thread_cache=1024 63 64 wait_timeout=18000 65 ##表和表聯接的緩衝區的大小 66 join_buffer_size = 1024M 67 ##是一個connection級參數,在每個connection第一次需要使用這個buffer的時候,一次性分配設置的記憶體 68 sort_buffer_size=8M 69 ##隨機讀取數據緩衝區使用記憶體 70 read_rnd_buffer_size = 8M 71 72 #connect 73 ##是一個MySQL中與安全有關的計數器值,它負責阻止過多嘗試失敗的客戶端以防止暴力破解密碼 74 max-connect-errors=100000 75 ##連接數 76 max-connections=3000 77 ##開啟查詢緩存 78 explicit_defaults_for_timestamp=true 79 ##mysql伺服器能夠工作在不同的模式下,並能針對不同的客戶端以不同的方式應用這些模式 80 sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 81 82 [mysqldump] 83 quick 84 85 [mysqld_safe] 86 log-error=/var/log/mysql/mysqld.log 87 pid-file=/var/run/mysqld/mysqld.pidmysql主庫配置文件
從庫配置文件:
1 # For advice on how to change settings please see 2 # http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html 3 4 [mysqld] 5 # 6 # Remove leading # and set to the amount of RAM for the most important data 7 # cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%. 8 # innodb_buffer_pool_size = 128M 9 # 10 # Remove lead/ing # to turn on a very important data integrity option: logging 11 # changes to the binary log between backups. 12 # log_bin 13 # 14 # Remove leading # to set options mainly useful for reporting servers. 15 # The server defaults are faster for transactions and fast SELECTs. 16 # Adjust sizes as needed, experiment to find the optimal values. 17 # join_buffer_size = 128M 18 # sort_buffer_size = 2M 19 # read_rnd_buffer_size = 2M 20 user=mysql 21 datadir=/database/mysql 22 socket=/var/lib/mysql/mysql.sock 23 server-id=214 #以ip為mysql的server-id 24 skip-name-resolve 25 26 # Disabling symbolic-links is recommended to prevent assorted security risks 27 symbolic-links=0 28 29 #slow_queries 30 slow_query_log_file = /var/log/mysql/mysql_slow_query.log 31 long_query_time=1 32 slow_query_log=1 33 34 #innodb 35 innodb_buffer_pool_size=16G 36 innodb_log_file_size=512M 37 innodb_log_buffer_size = 8M 38 innodb_flush_log_at_trx_commit=2 39 innodb_file_per_table=1 40 innodb_file_io_threads=4 41 innodb_flush_method=O_DIRECT 42 innodb_io_capacity=2000 43 innodb_io_capacity_max=6000 44 innodb_lru_scan_depth=2000 45 innodb_thread_concurrency = 0 46 47 #cache 48 ##內部記憶體臨時表的最大值 49 tmp_table_size=2G 50 character-set-server=utf8 51 collation-server=utf8_general_ci 52 ##即跳過外部鎖定 53 skip-external-locking 54 ##MySQL能暫存的連接數量(根據實際設置) 55 back_log=1024 56 ##指定索引緩衝區的大小,只對MyISAM表起作用,這裡寫上也沒有關係 57 key_buffer_size=1024M 58 ##這條指令限定用於每個資料庫線程的棧大小 59 thread_stack=256k 60 ##當一個查詢不斷地掃描某一個表,MySQL會為它分配一段記憶體緩衝區 61 read_buffer_size=8M 62 ##線程緩存 63 thread_cache_size=64 64 ##查詢緩存大小 65 query_cache_size=128M 66 ##內部記憶體臨時表的最大值,每個線程都要分配 67 max_heap_table_size=256M 68 ##將查詢結果放入查詢緩存中 69 query_cache_type=1 70 ##代表在事務過程中容納二進位日誌SQL語句的緩存大小 71 binlog_cache_size = 2M 72 ##同樣是緩存表大小 73 table_open_cache=128 74 ##緩存線程 75 thread_cache=1024 76 77 wait_timeout=18000 78 ##表和表聯接的緩衝區的大小 79 join_buffer_size = 1024M 80 ##是一個connection級參數,在每個connection第一次需要使用這個buffer的時候,一次性分配設置的記憶體 81 sort_buffer_size=8M 82 ##隨機讀取數據緩衝區使用記憶體 83 read_rnd_buffer_size = 8M 84 85 #connect 86 ##是一個MySQL中與安全有關的計數器值,它負責阻止過多嘗試失敗的客戶端以防止暴力破解密碼 87 max-connect-errors=100000 88 ##連接數 89 max-connections=3000 90 ##開啟查詢緩存 91 explicit_defaults_for_timestamp=true 92 ##mysql伺服器能夠工作在不同的模式下,並能針對不同的客戶端以不同的方式應用這些模式 93 sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 94 95 [mysqldump] 96 quick 97 98 [mysqld_safe] 99 log-error=/var/log/mysql/mysqld.log 100 pid-file=/var/run/mysqld/mysqld.pidmysql從庫配置文件
複製配置文件到/etc/my.cnf
主庫:cp my.cnf /etc/my.cnf
從庫:cp my_web_slave.cnf /etc/my.cnf
6、編輯配置文件:
vim /etc/my.cnf
#修改server-id=171替換成
server-id=[配置為安裝資料庫所在伺服器的ip]
說明:如果部署的mysql服務是作為從庫來使用的話,還需要將bin_log項給註釋掉。
7、創建目錄
創建日誌所在目錄
mkdir -p /var/log/mysql
chown -R mysql.mysql /var/log/mysql
創建數據所在目錄
mkdir -p /database/mysql
chown -R mysql.mysql /database/mysql
創建binlog所在目錄(如果作為從庫的話,可以跳過)
mkdir -p /database/mysql-bin
chown -R mysql.mysql /database/mysql-bin
8、初始化、啟動
初始化資料庫
mysql_install_db --user=mysql --datadir=/database/mysql
啟動
service mysqld start #(第一次時間會相對長點,需要初始化,請耐心等待)
9、初始化配置
命令 mysql_secure_installation
Enter current password for root (enter for none):[回車跳過]
et root password? [Y/n] y [是否設置root密碼]
New password: [輸入:zxfly]
Re-enter new password: [輸入:zxfly]
Remove anonymous users? [Y/n] y [刪除匿名用戶]
Disallow root login remotely? [Y/n] y [禁止root遠程登錄]
Remove test database and access to it? [Y/n] y [刪除test資料庫]
Reload privilege tables now? [Y/n] y [刷新許可權]
10、創建一個管理員賬號
#登錄mysql
mysql -uroot -pzxfly
#創建賬號 grant all on *.* to 'zxfly'@'192.168.0.% ' identified by 'zxfly'; [授權管理所用庫] FLUSH PRIVILEGES; [刷新許可權,寫入磁碟]四、主從複製
MySQL主從部署文檔
五、配置文件說明
1、基本配置
[mysqld]
# | 配置項 | 說明 |
---|---|---|
1 | user=mysql | 啟動用戶 |
2 | datadir=/database/mysql | 資料庫所在路徑 |
3 | socket=/var/lib/mysql/mysql.sock | sock文件所在目錄 |
4 | skip-name-resolve | 禁用DNS解析,訪問太慢加入此優化 |
5 | symbolic-links=0 | 關閉符號連接 |
6 | slow_query_log_file = /var/log/mysql_slow_query.log | 慢查詢日誌所在路徑 |
7 | long_query_time=1 | 記錄1秒以上的慢查詢 |
8 | slow_query_log=1 | 開啟慢查詢 |
9 | server-id=171 | 每一個mysql實例設置一個獨立的server-id一般以IP定義 |
10 | log_bin=/database/mysql/mysql_bin | 二進位文件所在路徑及格式 |
11 |
binlog_format=mixed |
定義二進位文件輸出的格式(混合型) 可定義類型: 1、row 詳細記錄所有,會產生大量的日誌。 2、statement(預設) 記錄sql語句,及其位置。在複雜的語句時可能記錄不正確。 3、mixed 以上兩種的結合,會自動選擇。 |
12 | sync-binlog=1 |
預設為0 1是最安全的。 1、當出現錯誤的時候,設置為1,最多會丟失一個事務。 2、他是最慢的選擇。 3、但是確保恢復快的話,應該由雙電源緩存機制存在。 |
13 | expire_logs_days=14 | 保留二進位文件的天數 |
[mysqld_safe]
# | 配置項 | 說明 |
---|---|---|
1 | log-error=/var/log/mysqld.log | 錯誤日誌路徑 |
2 |
pid-file=/var/run/mysqld/mysqld.pid |
pid文件所在路徑 |
2、優化項配置
#innodb引擎優化
# | 配置項 | 說明 |
---|---|---|
1 | innodb_buffer_pool_size=104G |
緩存innodb表的索引,數據,插入數據時的緩衝, 1、官方建議設置為記憶體大小的80%,線上所掛載的大小為160G,可用130G,所以設置為104G 2、 |
2 | innodb_log_file_size=512M |
事務日誌的大小 官方推薦為:日誌大小*日誌組大小(預設為2)不能超過512G 1、該值越大,寫入磁碟IO越小, 2、該值越大,出現錯誤恢復越難 3、預設為48M,修改為512M,也就是在大併發的時候1G的日誌刷入。 4、如果該值調大,並且為了減少崩潰恢復,應該將下main的innodb_flush_log_at_trx_commit改為1 |
3 | innodb_log_buffer_size = 8M | 事務在記憶體中的緩衝大小 |
4 | innodb_flush_log_at_trx_commit=2 | 每秒將事務日誌刷到磁碟中 (0:每秒刷一次 1:提交事務就刷入磁碟 2:有事務執行,然後每秒刷一次) |
5 | innodb_file_per_table=1 | 開啟共用表空間自動收縮 |
6 | innodb_file_io_threads=4 | 可用的IO線程數 |
7 | innodb_flush_method=O_DIRECT | 定義刷寫模式(預設為:fdatasync) O_DIRECT會最小化緩衝對io的影響, |
8 | innodb_io_capacity=2000 | 定義讀寫IO的能力 和磁碟轉速及大小有關 |
9 | innodb_io_capacity_max=6000 | 每秒最大IO能力 |
10 | innodb_lru_scan_depth=2000 | 一般與innodb_io_capacity的值相同 |
11 | innodb_thread_concurrency = 0 | 不限制併發線程數 |