91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MySQL 5.7安裝部署總結

發布時間:2020-08-10 23:21:02 來源:ITPUB博客 閱讀:236 作者:y674526601 欄目:MySQL數據庫

之前搭建MySQL環境都是使用公司內部使用的腳本,其實說實話屏蔽了很多細節,對MySQL的安裝還是了解比較膚淺,今天有個MySQL 5.7的數據遷移的任務,也是為了熟悉安裝過程就走了一遍安裝的流程,整體和5.6差別不大,這里演示安裝的都是Percona發布的二進制版本,和MySQL官方的是完全兼容,當然也揉入了Percona一些自己的東西。
首先就是安裝路徑和數據路徑分離,這一點尤其重要。當然不是MySQL 5.7中開始,之前安裝的時候,雖然最后也能成功,但是這一塊就比較亂。
二進制包是以.tar.gz這樣的文件,可以自行下載,假設我們解壓后方到了mysql5.7這個目錄下,我們把它放到/usr/local下,這個才是大本營。# mv /tmp/mysql5.7 /usr/local/mysql# mv /tmp/mysql5.7 /usr/local/mysql

然后根據需要創建相應的數據目錄。

#mkdir -p /home/mysql

這里我們指定兩個變量basedir指向安裝目錄,datadir指向數據目錄
basedir=/usr/local/mysql
datadir=/home/mysql
初始化系統環境,比如創建用戶,組之類的。

chattr -i /etc/shadow /etc/group /etc/gshadow /etc/passwd
/usr/sbin/groupadd mysql
/usr/sbin/useradd mysql -g mysql -d /home/mysql -s /sbin/nologin
chattr +i /etc/shadow /etc/group /etc/gshadow /etc/passwd

這個就是老套路了。

然后從support-files里面拷貝啟動腳本,放到自啟動設置中

cp -rf $basedir/support-files/mysql.server /etc/init.d/mysql

而下面的設置就是創建一些軟連接,是的/usr/bin中可以正常訪問mysql的幾個常用命令行工具。

chown -R mysql:mysql $basedir $datadir
ln -f -s /usr/local/mysql/bin/mysql /usr/bin/mysql
ln -f -s /usr/local/mysql/bin/mysqldump /usr/bin/mysqldump
ln -f -s /usr/local/mysql/bin/mysqladmin /usr/bin/mysqladmin
ln -f -s /usr/local/mysql/bin/mysqlshow /usr/bin/mysqlshow
ln -f -s /usr/local/mysql/bin/mysqld /usr/bin/mysqld

設置MySQL自啟動

/sbin/chkconfig --add mysql
/sbin/chkconfig --level 2345 mysql on

其實看看這些步驟,其實如果全是手動檔,其實也可以,這樣就是為了方便,統一管理。

    然后我們來做幾件事情,先來設置參數文件,可以從support-files里面拷貝一個模板,在這個基礎上改進,或者基于現有的項目的模板也可以。

cp $basedir/support-files/my.cnf.nor /etc/my.cnf

這個地方還是需要設置字符集:

客戶端

default-character-set=utf8

服務器

character-set-server = utf8

完成之后,這個時候先不要急著service mysql start,肯定會有下面的問題。

# service mysql start
Starting MySQL (Percona Server)........ ERROR! The server quit without updating PID file (/var/lib/mysql/teststd.cyou.com.pid).

而查看錯誤日志就會看到很明顯的問題:2016-11-09T14:15:01.952812+08:00 0 [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.user' doesn't exist
2016-11-09T14:15:01.952883+08:00 0 [ERROR] Aborting

我們需要初始化數據字典,這里就需要注意一點,如果使用如下的命令會提示已經過期了。

mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/home/mysql

推薦的方式是:

mysqld  --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/home/mysql

這個操作比較沒有任何日志提示就成功了。

再次嘗試就沒有問題了。

[root@teststd bin]# service mysql start
Starting MySQL (Percona Server)...... SUCCESS!

而接下來的事情也需要格外注意,那就是MySQL 5.7中的秘密設置,它基于安全的考慮,會設置一個默認的密碼。

直接登錄是會報錯的。

[root@teststd bin]# mysql
Logging to file '/home/mysql/query.log'
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

怎么查看默認密碼呢,可以在啟動的日志里面,我是在error.log里面看到的。

[root@teststd mysql]# grep password *.log
error.log:2016-11-09T14:28:51.344922+08:00 1 [Note] A temporary password is generated for root@localhost: aUpmj1zs8M%p
error.log:2016-11-09T14:29:39.745255+08:00 2 [Note] Access denied for user 'root'@'localhost' (using password: NO)
query.log:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

按照提示輸入密碼,就可以成功登錄了。

[root@teststd mysql]# mysql -u root -p
Logging to file '/home/mysql/query.log'
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.

不過需要馬上修改密碼,要不什么命令都運行不了,會一直提示你修改密碼。

> show databases;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

修改密碼

> set password=password('mysql');
Query OK, 0 rows affected, 1 warning (0.01 sec)

整個過程就順利完成了,后面想繼續修改密碼,有幾種寫法,大同小異。

update user set authentication_string=PASSWORD('mysql') where User='root';

接下來就是搭建從庫了,不搭建從庫這個環境就是不完整的。

新版本的主庫已經啟用了GTID

> show master status\G
*************************** 1. row ***************************
             File: mysql-bin.000002
         Position: 646
     Binlog_Do_DB:
 Binlog_Ignore_DB:
Executed_Gtid_Set: c6d66211-a645-11e6-a2b6-782bcb472f63:1-135
1 row in set (0.00 sec)

開了binlog,比如下面的幾個參數:

| log_bin                                                  | ON                          
| log_bin_basename                                         | /home/mysql/mysql-bin       
| log_bin_index                                            | /home/mysql/mysql-bin.index
| binlog_format                                            | ROW

還有一個重要的設置就是server-id

[root@testdb2 ~]# mysqladmin var|grep server_id                
| server_id                                                | 20

這里簡單提一下,server-id的格式比較單一,不能有其它的字符,比如 ,  _  -這樣的字符,否則啟動的時候會有報錯。

2016-11-09T06:48:16.918807Z 0 [ERROR] Unknown suffix '_' used for variable 'server_id' (value '130_58')
2016-11-09T06:48:16.918934Z 0 [ERROR] /usr/local/mysql/bin/mysqld: Error while setting value '130_58' to 'server_id'
2016-11-09T06:48:16.918981Z 0 [ERROR] Aborting   
不少大公司在這方面還是有一些的規范的。

假設我就設置簡單一些,按照IP末尾來設置server-id

# mysqladmin var|grep server_id
| server_id                                                | 58 

有個細節說一下,還是server-id,

在參數文件/etc/my.cnf里面是:

server-id = 58但是查看參數設置可以看到是server_id,一個是橫線,一個是下劃線

[root@teststd mysql]# mysqladmin var|grep server_id
| server_id                                                | 58  

我們在主庫全庫導出:

主庫:

[root@testdb2 ~]# mysqldump -f -hlocalhost -uroot --default-character-set=utf8 --single-transaction -R --triggers -q --all-databases |gzip> master.dmp.gz
Warning: A partial dump from a server that has GTIDs will by default include the GTIDs of all transactions, even those that changed suppressed parts of the database. If you don't want to restore GTIDs, pass --set-gtid-purged=OFF. To make a complete dump, pass --all-databases --triggers --routines --events.
從庫應用可能會有這樣的錯誤。

# mysql < master.dmp
Logging to file '/home/mysql/query.log'
ERROR 1840 (HY000) at line 24: @@GLOBAL.GTID_PURGED can only be set when @@GLOBAL.GTID_EXECUTED is empty.

很簡單,我們這是一個從庫,show master應該不會有GTID的信息

> show master status\G
*************************** 1. row ***************************
             File: mysql-bin.000005
         Position: 194
     Binlog_Do_DB:
 Binlog_Ignore_DB:
Executed_Gtid_Set: c6d66211-a645-11e6-a2b6-782bcb472f63:1-135
1 row in set (0.00 sec)

在從庫做一個reset操作即可。

> reset master;
Query OK, 0 rows affected (0.02 sec)

再次查看,從庫上show master就沒有GTID的干擾了.

> show master status\G

*************************** 1. row ***************************             File: mysql-bin.000001
         Position: 154
     Binlog_Do_DB:
 Binlog_Ignore_DB:
Executed_Gtid_Set: 直接應用數據即可。

[root@teststd tmp]# mysql < master.dmp
Logging to file '/home/mysql/query.log'


主庫的配置一個同步用戶:

GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'repl'@'%' IDENTIFIED BY 'repl12345';


從庫使用GTID的方式自動應用

CHANGE MASTER TO  
     MASTER_HOST='10.127.128.99',    
     MASTER_USER='repl',    
     MASTER_PASSWORD='repl12345',    
     MASTER_PORT=3306,    
     MASTER_AUTO_POSITION = 1;

然后啟動從庫的日志應用即可。

> start slave;
Query OK, 0 rows affected (0.01 sec)

slave就這樣搭建好了,簡單的驗證就是使用show slave status了。

> show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 10.127.128.99
                  Master_User: repl
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000009
          Read_Master_Log_Pos: 142343798
               Relay_Log_File: teststd-relay-bin.000002
                Relay_Log_Pos: 717
        Relay_Master_Log_File: mysql-bin.000009
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
            ...
          Exec_Master_Log_Pos: 142343798
              Relay_Log_Space: 926
              ...
        Seconds_Behind_Master: 0
     ...
             Master_Server_Id: 20
                  Master_UUID: 8fc8d9ac-a62b-11e6-a3ee-a4badb1b4a00
             Master_Info_File: mysql.slave_master_info
                    SQL_Delay: 0
          SQL_Remaining_Delay: NULL
      Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
           Master_Retry_Count: 86400
         ...
           Retrieved_Gtid_Set: 8fc8d9ac-a62b-11e6-a3ee-a4badb1b4a00:1090
            Executed_Gtid_Set: 8fc8d9ac-a62b-11e6-a3ee-a4badb1b4a00:1-1090
                Auto_Position: 1
         Replicate_Rewrite_DB:
                 Channel_Name:
           Master_TLS_Version:
1 row in set (0.00 sec)




向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

越西县| 三河市| 德庆县| 湖口县| 咸丰县| 新野县| 香河县| 嘉黎县| 托克托县| 宁城县| 绥江县| 樟树市| 社会| 新宁县| 鄯善县| 黄浦区| 贞丰县| 汤原县| 上思县| 和静县| 和顺县| 高邮市| 万州区| 右玉县| 休宁县| 常州市| 明溪县| 三门峡市| 来宾市| 衡阳县| 周宁县| 尤溪县| 民和| 玛曲县| 公安县| 浙江省| 石泉县| 安仁县| 三江| 邹平县| 疏附县|