#### MySQL 安裝配置部分
1)下載解壓版,解壓到指定目錄,如C:\mysql-5.7.27-winx64
2)設置系統環境變量
鍵名:MYSQL_HOME
值爲:C:\mysql-5.7.27-winx64
3)在Path中添加:%MYSQL_HOME%\bin
4)解壓目錄下創建my.ini文件並配置如下:
[mysqld]
port = 3306
basedir=C:/mysql-5.7.27-winx64
datadir=C:/mysql-5.7.27-winx64/data
max_connections=200
character-set-server=utf8
default-storage-engine=INNODB
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[mysql]
default-character-set=utf8
5)MySQL的安裝(先CMD到C:\mysql-5.7.27-winx64\bin)
mysqld -install
提示:Service successfully installed. 表示安裝成功
6)MySQL初始化(生成data目錄&獲取初始密碼)
mysqld --initialize
在解壓目錄下生成一個data文件夾, 在這個文件夾下有一個.err結尾的文件,打開可以找到隨機生成的默認密碼。
7)啓動MySQL服務
net start mysql
8)使用隨機密碼登錄並修改密碼
mysql -u root -p
9)修改登陸密碼
alter user user() identified by '新密碼';
至此,MySQL就可以正常運行並使用了。
#### 開啓遠程連接
1)首先CMD到C:\mysql-5.7.27-winx64\bin
2)輸入mysql -uroot -p 按回車鍵,輸入密碼後登錄MySQL
3)開啓遠程連接,輸入命令GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '密碼' WITH GRANT OPTION;
4)刷新權限:FLUSH PRIVILEGES;
5)重啓MySQL服務
#### 主從複製配置
前提:
1-最好找兩個機器測試,能相互拼通,測試時可以關閉防火牆;兩臺機器最好裝同樣版本的MySQL以避免亂七八糟的未知問題 。
2-執行命令時,請使用命令行登錄到相應的數據庫:mysql -uroot -p 回車後輸入你的密碼。
先說Master配置
1)修改Master的my.ini文件,添加以下配置信息:
[mysqld]
server-id=1
#開啓binlog 日誌
log_bin= master-bin
log-bin-index=master-bin.index
#日誌的緩存時間
expire_logs_days= 10
#日誌的最大大小
max_binlog_size=200M
#忽略同步的數據庫 除了忽略的,其他的都同步
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
#mysql複製模式,三種:SBR(基於sql語句複製),RBR(基於行的複製),MBR(混合模式複製)
binlog_format=MIXED #混合模式複製,可靠性更高
2)配置文件修改以後,重啓MySQL服務
3)查看主庫二進制日誌文件的狀態
show global variables like '%log_bin%';
如果log_bin 的值爲OFF則配置文件有問題 ,正常爲ON,則表示配置成功;
4)爲Slave創建用戶,即授權給Slave
grant replication slave,replication client on *.* to 'slave'@'%' identified by "123456";
說明:
%:表示除了本地可以訪問,還可以遠程訪問
replication slave:表示只授予slave的權限
slave:從庫使用的用戶名;123456爲密碼
5)看看有沒有我們創建的賬號
select user from mysql.user;
6)查看主庫狀態
show master status;
正常情況下可以看到一個表格:File:master-bin.000001 Postition: 123456等信息,說明正常
再來看Slave配置
1)同樣的,修改my.ini配置文件,如下:
[mysqld]
.......
relay-log=relay-log
relay-log-index=relay-log.index
server-id=2
2)命令行登錄slave節點的MySQL
3)主從同步設置
CHANGE MASTER TO MASTER_HOST='192.168.0.100',MASTER_USER='slave',MASTER_PASSWORD='123456', MASTER_LOG_FILE=master-bin.000001',MASTER_LOG_POS=145;
說明:
192.168.0.100:Master IP
slave&123456:主庫設置好的賬號信息供Slave使用的
master-bin.000001與145:對應主庫配置信息,這裏注意,如果主庫有多個這樣的數據,請選最後一個。
4)啓動複製線程
mysql> start slave;
5)執行以下命令查看主從是否設置成功?
mysql> show slave status \G;
\G帶上,格式化信息,好看一點。
正常情況下我們關注兩個信息:
Slave_IO_Running和Slave_SQL_Running狀態均爲YES;主從複製環境已經OK。
如果一切正常,那麼可以測試了,在主庫上創建一個數據庫,可以看到馬上同步到從庫上了,繼續建表,添加測試數據,發現從庫同步正常。
但,也許我們沒有那麼順利,我遇到的情況:
1)數據庫安裝的時候,沒有使用my.ini結果造成怎麼修改這個配置文件都不生效,後來重裝數據庫,問題 解決;
2)主從設置時,誤把Master的設置拷貝到Slave裏去了,看似都對就是同步不了數據,早上起來突然發現這個問題 ,故重新配置;但要先幹掉從庫上以前的配置,你可以刪了從庫,也可以使用文末的命令;
3)都設置好了,檢查不出任何的問題 了,發現依然不同步,後來在主庫上查看從庫是否連接上來發現,從庫的計算機名爲亂碼,改了之後,再測,一切正常。
#### 常用命令(摘錄)
主庫上
1)查看二進制日誌是否開啓
mysql>SHOW GLOBAL VARIABLES LIKE '%log%';
如果正常開啓,則log_bin爲ON
2)查看主節點二進制日誌列表
mysql>SHOW MASTER LOGS;
3)查看主節點的server id
mysql>SHOW GLOBAL VARIABLES LIKE '%server%';
4)查看從庫是否正常連接到主庫
show processlist \G;
從庫上
1)查看中繼日誌是否開啓
mysql>SHOW GLOBAL VARIABLES LIKE "%log%";
2)查看server相關信息
mysql>SHOW GLOBAL VARIABLES LIKE '%server%';
3)開啓Relay日誌
查看是否開啓,show variables like '%relay%';
4)遠程連接主庫嘗試
mysql>mysql -u主庫分配的賬號 -p -h 192.168.0.100
5)使用Master分配的賬號登錄主庫
mysql>show databases; //查看授權過了的數據庫
6)查看從庫是否同步上主庫
show slave status;
當Slave_IO_Running: Yes Slave_SQL_Running: Yes 都爲yes說明是正常的
#### 其他調試語句(摘錄)
1)查看錯誤
mysql>show warnning;
2)查看主庫狀態
mysql>show master status \G;
3)查看從庫狀態
mysql>show slave status \G;
4)重置主記錄信息
mysql>reset master;
5)重置從記錄信息
mysql>reset slave;
6)停止同步線程
mysql>stop slave;
7)開始同步線程
mysql>start slave;
8)清空從所有連接、信息記錄
mysql>reset slave all;
9)刪除從
mysql>change master to master_host=' ';
最後:公司內外網隔離的,截不了圖,對不起大家了。接下來準備寫MySQL自身的主從同步機制結合Mycat實現讀寫分離,可能包括的內容:Mycat集羣,MySQL一主多從,讀寫分離,以後再搞多主多從,在這裏吐槽一下,技術適合當下的就是最好的,最簡單的就是最穩定的,MySQL一般是單表達到800萬數據就要考慮數據拆分,多如牛毛的一些個小公司到死可能都沒有那麼多業務數據,倒是面試時天天談大數據,高併發,數據庫集羣,簡直CD。
如果有小夥伴感興趣,可以加Q38095589交流。
也請大牛多指點,感謝!