linux-msyql

### ubuntu msyql

安裝MySQL

// Ubuntu 18.04.1 LTS apt-get 安裝
$sudo apt-get install mysql-server

 apt會自動安裝依賴庫和client。默認安裝目錄 /etc/mysql。 安裝後能夠 service mysql status 查看MySQL狀態html

 

重設密碼

安裝MySQL沒有提示設置密碼,有時會出現進不去MySQL客戶端的狀況,一是密碼不對,二是沒有設置默認密碼mysql

報錯:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)web

兩種辦法登陸後修改密碼sql

方法一:跳過驗證登陸

// 1.中止服務
$sudo /etc/init.d/mysqld stop
// 2.跳過驗證 在[mysql]組下添加一行:skip-grant-tables   
$sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
// 3.啓動服務
$sudo /etc/init.d/mysqld start
// 4.免密碼登陸後設置密碼
$use mysql
$update user set authentication_string=password('123456') where User='root'
$flush privileges
// 5.刪除:skip-grant-tables
$sudo vim /etc/mysql/mysql.conf.d/msyqld.cnf
// 6.重啓服務
$sudo /etc/init.d/mysqld restart

方法二:默認密碼登陸

// Ubuntu默認密碼所在文件 
// 找到password對應的值 登陸數據庫 而後修改密碼 退出重啓(重複方法一456步)
sudo cat /etc/mysql/debian.cnf

方法三:版本較高的mysql可能第一次不須要輸入密碼數據庫

mysql -u rootubuntu

MySQL 容許遠程訪問

默認狀況下 MySQL不容許遠程連接,程序交互時可能須要開啓。vim

// 打開配置文件,註釋掉綁定IP(bind-address) 或 指定可連接的ip或 bind-address=*.
$sudo vim /etc/mysql/my.cnf 
// 登陸MySQL 修改數據表,受權root用戶在任意ip('%')訪問任意數據庫(*.*)的任意權限(all privileges).生產環境能夠指定固定用戶名和固定的ip地址。
mysql> grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;
// 退出重啓數據庫
$sudo service mysqld restart

 

mysql配置雙主備份

數據庫備份原理主要是是讀取其餘數據庫變動的語句,而後在本地執行一遍,保證內容一致。在主備模式下,主數據庫將操做寫入一個log文件中,從數據庫建立一個channel,開啓一個讀文件線程,讀取主的log變更保存到本地文件,另外一個執行語句線程執行拉取來的log文件中的sql語句來同步。開始配置前先保證雙方MySQL都容許遠程訪問。先配置主從模式,主主反向再配置一遍便可。安全

假定兩臺服務器:192.168.10.100爲主,192.168.10.101爲備。服務器

配置同步前,最好保證主從數據庫的初始狀態一致。 併發

 

同步初態步驟
//一、將主服務器要同步的數據庫加鎖,避免同步時發生改變。
mysql> use database_name;
mysql> flush tables with read lock; 
//2、使用mysqldump工具導出數據:
msyql> mysqldump
-uroot -pxxx database_name >database_name.sql
//3、備份完成後,解鎖數據庫:
mysql> unlock tables;
//4、將初始數據導入從數據庫:
mysql> create database database_name;
mysql
>use database_name;
mysql>
source database_name.sql;

 

 

配置主:

配置前,登陸100的MySQL輸入: show master status\G;   顯示 Empty set;

//編輯MySQL配置文件,在[mysqld]下面添加一些配置信息,保存後重啓MySQL。
$sudo vim /etc/mysql/my.cnf

 

 
 
#主數據庫id爲1,不能相同。
server-id=1
#開啓二進制日誌,指定名字爲mysql-bin
log-bin=mysql-bin
#中繼日誌名,複製線程先把遠程變化複製到此日誌,再執行
relay_log=mysqld-relay-bin
#中繼日誌執行後,變化是否須要計入本身的bianary-log,當此服務器作另外一個服務器的主服務器,須要打開。
log-slave-updates=1

#須要同步的庫,不指定默認同步所有庫                            
binlog-do-db=dh_sign  
#主庫支持讀寫操做,若讀寫分離可配置1
#read-only=0


##也能夠配置不須要同步的庫,其餘庫同步
#binlog-ignore-db=information_schema
#binlog-ignore-db=sys
#binlog-ignore-db=perfromance_schema

##最安全的設置,每次提交事務以前會將二進制同步到磁盤上,保證服務器崩潰時不會丟失事件
sync_binlog=1

##自增設置,在雙主均可以寫入時,會產生自增主鍵的衝突問題,配置錯落自增。自增間隔n是可寫的mysql實例數量
auto-increment-increment=2
auto-increment-offset=1

#GTID模式
gtid-mode=on
enforce-gtid-consistency=1

## slave併發優化
slave-parallel-type=LOGICAL_CLOCK
slave-parallel-workers=16
master_info_repository=TABLE
relay_log_info_repository=TABLE
relay_log_recovery=ON

保存退出,並重啓MySQL。 service mysqld restart; 

再次登陸MySQL,輸出主的狀態。  mysql> show master status\G;   顯示爲:

mysql> show masterstatus\G;
*************************** 1. row ***************************
             File: mysql-bin.000059
         Position: 1046
     Binlog_Do_DB: dh_sign
 Binlog_Ignore_DB:
Executed_Gtid_Set: e18aca99-033b-11e9-a3d7-90f1b0f14435:1-46,
f6ea3916-feb6-11e8-9084-04d3b0eb5843:1-71
1 row in set (0.00 sec)

ERROR:
No query specified

能夠看到log文件名,同步log的起始位置、log記錄的庫和忽略庫、Gtid編號信息,說明配置成功。關於Gtid能夠查看:

Gtid-weblog-1

Gtid-weblog-2

 

配置從:

登陸從服務器(101)的mysql,查看從服務的狀態: show slave status\G; 一樣顯示爲空。

// 若是開啓了Gtid,直接執行此條語句,指定主服務便可。
mysql> change master to master_host='192.168.10.100',master_user='root',master_password='123456',master_port=3306,master_auto_position=1;

// 若是沒有開啓,須要指定log文件位置等。master_log_file和master_log_pos爲剛查看的主庫的log文件和位置。
# mysql> change master to master_host='192.168.10.100',master_user='root',master_password='123456',master_log_file='mysql-bin.000059',master_log_pos=1046;

// 設置主服務可能會有報錯信息,按相關提示輸入指令便可,可能涉及到以下指令:
# STOP SLAVE IO_THREAD FOR CHANNEL '';
# START SLAVE IO_THREAD FOR CHANNEL '';
# STOP SLAVE;
# RESET SLAVE;// 內存中依然保存主庫ip,port等
# RESET SLAVE ALL; // 清空全部slave配置,show slave status\G,爲空。

退出mysql後再次進入(或重啓),再次查看從狀態: show slave status\G; 顯示爲:

mysql> show slave status\G;
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.10.239
                  Master_User: root
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000016
          Read_Master_Log_Pos: 36050
               Relay_Log_File: mysqld-relay-bin.000231
                Relay_Log_Pos: 454
        Relay_Master_Log_File: mysql-bin.000016
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: 
          Replicate_Ignore_DB: 
           Replicate_Do_Table: 
       Replicate_Ignore_Table: 
      Replicate_Wild_Do_Table: 
  Replicate_Wild_Ignore_Table: 
                   Last_Errno: 0
                   Last_Error: 
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 36050
              Relay_Log_Space: 915
              Until_Condition: None
               Until_Log_File: 
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File: 
           Master_SSL_CA_Path: 
              Master_SSL_Cert: 
            Master_SSL_Cipher: 
               Master_SSL_Key: 
        Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error: 
               Last_SQL_Errno: 0
               Last_SQL_Error: 
  Replicate_Ignore_Server_Ids: 
             Master_Server_Id: 2
                  Master_UUID: e18aca99-033b-11e9-a3d7-90f1b0f14435
             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
                  Master_Bind: 
      Last_IO_Error_Timestamp: 
     Last_SQL_Error_Timestamp: 
               Master_SSL_Crl: 
           Master_SSL_Crlpath: 
           Retrieved_Gtid_Set: e18aca99-033b-11e9-a3d7-90f1b0f14435:46
            Executed_Gtid_Set: e18aca99-033b-11e9-a3d7-90f1b0f14435:1-46,
f6ea3916-feb6-11e8-9084-04d3b0eb5843:1-71
                Auto_Position: 1
         Replicate_Rewrite_DB: 
                 Channel_Name: 
           Master_TLS_Version: 
1 row in set (0.00 sec)

ERROR: 
No query specified
Slave_IO_Running和Slave_SQL_Running的值都爲Yes時證實能夠從主庫自動同步了,能夠在主庫100 insert,在101 select或delete驗證是否同步。
至此主從配置完成,要配置雙主,只要將步驟反過來再作一遍便可,注意主從server-id配置不能相同。

配置時發現有時會出現主服務在重啓時會改變log文件和位置信息,可能致使從服務配置失效。應按順序來配置。如出現錯誤,嘗試從服務配置後不重啓,從新登陸便可。
相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息