雲服務器MySQL主從配置完全解讀


配置時環境:騰訊雲服務器,雲服務器上的MySQL5.7,未配置過主從,如環境不一致,請謹慎操作。我的Master主機(以下稱主機)公網IP是119.29.234.43、內網ip是10.104.190.222,Slave從機(以下稱從機)的IP不用關心(主機設權限為所有IP都可以訪問,使用”%“實現),請修改為你自己的並在下面代碼包含公網IP的地方進行相應的修改。(藍色字體是所有操作主機的命令步驟,綠色字體是操作從機的命令步驟,底部是供老鳥使用命令集合)

騰訊雲服務器如圖所示:

具體步驟:

1.登錄雲服務器(如主機,從機未安裝jdk和MySQL請操作2 3 ,否請跳過),下面是控制台用戶命令操作

2.安裝JDK:     

sudo apt-get install openjdk-8-jdk    

y       

3.安裝MySQL:    

sudo apt-get install mysql-server

    賬號:   root

    密碼:   root

主機配置

4.1修改mysqld.cnf文件信息

cd /etc/mysql/mysql.conf.d/

sudo vim mysqld.cnf  此時打開mysqld.cnf出現大量信息

i  進入編輯模式

  一直操作向下箭頭,找到信息底部白色的兩行代碼,這部分代碼即是被注釋的代碼,如圖:

 

刪除#,修改binglog_do_db = db_zhanye_sm,binlog_ignore_db = mysql 。 其中db_zhanye_sm是要同步的數據庫名稱,操作后如下圖所示

 

找到bing-adress 把127.0.0.1修改為騰訊雲主機內網ip 10.104.190.222,不修改會導致等下MySQL無法重啟

 

 

Esc 退出vim編輯狀態 

:wq 保存修改內容,並回到控制台(第一步":"具體操作按同時按住Shift ;兩個鍵 第二步w 第三步q 第四步回車鍵 )        

mysql -u root -p   打開數據庫,接下來輸入數據庫密碼

root        輸入密碼后進入數據庫

接下來是創建一個新用戶用來遠程連接使用:   

在MySQL中輸入以下命令 注釋:username - 你將創建的用戶名, host - 指定該用戶在哪個主機上可以登陸,如果是本地用戶可用localhost, 如果想讓該用戶可以從任意遠程主機登陸,可以使用通配符%. password - 該用戶的登陸密碼,密碼可以為空,如果為空則該用戶可以不需要密碼登陸服務器。MySQL里面輸入命令:CREATE USER 'username'@'host' IDENTIFIED BY 'password';

create user 'Edward'@'%' IDENTIFIED BY '123';

 

在MySQL中操作此命令,此處是授權命令。例如:GRANT privileges ON databasename.tablename TO 'username'@'host';privileges - 用戶的操作權限,如SELECT , INSERT , UPDATE 等(詳細列表見該文最后面).如果要授予所的權限則使用ALL.;databasename - 數據庫名,tablename-表名,如果要授予該用戶對所有數據庫和表的相應操作權限則可用*表示, 如*.*.  例子:( GRANT SELECT, INSERT ON test.user TO 'pig'@'%';) 

GRANT SELECT,INSERT ON db_zhanye_sm.* TO 'Edward'@'%';

 

用以上命令授權的用戶不能給其它用戶授權,如果想讓該用戶可以授權,用以下命令: GRANT privileges ON databasename.tablename TO 'username'@'host' WITH GRANT OPTION;

GRANT privileges ON db_zhanye_sm.test TO 'Edward'@'%' WITH GRANT OPTION;

 

 

授予從機復制表權限,示例:GRANT REPLICATION SLAVE ON *.* TO 'user'@'X.X.X.X' IDENTIFIED BY 'password';

GRANT REPLICATION SLAVE ON *.* TO 'Edward'@'%' IDENTIFIED BY '123';

exit   退出數據庫操作

sudo /etc/init.d/mysql restart    重啟數據庫

mysql -u root -p     登錄數據庫,

root          

show master status;  顯示信息如下圖所示,注:執行完此步驟后不要再操作主服務器MYSQL,防止主服務器狀態值變化。記錄File 和 Position的值並給從機使用;

 

主機命令集合,供老鳥使用
sudo apt-get install openjdk-8-jdk sudo apt-get install mysql-server cd /etc/mysql/mysql.conf.d/ sudo vim mysqld.cnf 取消注釋,修改    binglog_do_db =        binlog_ignore_db = 騰訊雲安全規則修改,找到bing-adress 把127.0.0.1替換為騰訊雲主機內網ip Esc :wq mysql -u root -p    create user 'user'@'%' IDENTIFIED BY 'password'; GRANT SELECT,INSERT ON db_zhanye_sm.* TO 'user'@'%'; GRANT privileges ON db_zhanye_sm.test TO 'user'@'%' WITH GRANT OPTION; GRANT REPLICATION SLAVE ON *.* TO 'user'@'%' IDENTIFIED BY 'password'; sudo /etc/init.d/mysql restart mysql -u root -p  show master status; 

 

從機配置:

 

4.2修改mysqld.cnf文件信息

cd /etc/mysql/mysql.conf.d/

sudo vim mysqld.cnf  此時打開mysqld.cnf出現大量信息

i  進入編輯模式

  一直操作向下箭頭,在[mysqld]下一行添加:

[mysqld]

server-id = 2

relay-log = slave-relay-bin

relay-log-index = slave-relay-bin.index

Esc 退出vim編輯狀態 

:wq 保存修改內容,並回到控制台(第一步":"具體操作按同時按住Shift ;兩個鍵 第二步w 第三步q 第四步回車鍵 )        

重啟MySQL,命令:
 sudo /etc/init.d/mysql restart

3.登錄MySQL

mysql -u root -p   打開數據庫,接下來輸入數據庫密碼

root        輸入密碼后進入數據庫

stop slave;   停止slave服務

在MySQL中輸入以下命令,即可連接Master主服務器:此時需要主機提供記錄的File 和 Position的值


 change master to master_host='119.29.234.43',master_port=3306,master_user='Edward',master_password='123',master_log_file='mysql-bin.000009',master_log_pos=154;


 備注:master_host對應主服務器的外網IP地址,master_port對應主服務器的端口(3306),master_log_file對應show master status顯示的File列:mysql-bin.000009,master_log_pos對應Position列:154,否則有可能出現同步失敗。

exit  退出MySQL

sudo /etc/init.d/mysql restart    重啟數據庫

登錄MySQL

mysql -u root -p   打開數據庫,接下來輸入數據庫密碼

root        輸入密碼后進入數據庫

start slave;    啟動Slave數據同步

show slave status\G;  如果slave_io_running和slave_sql_running都為yes,那么表明可以成功同步了

 

從機命令集合,供老鳥使用
cd /etc/mysql/mysql.conf.d/ sudo vim mysqld.cnf [mysqld] server-id = 2 relay-log = slave-relay-bin relay-log-index = slave-relay-bin.index sudo /etc/init.d/mysql restart mysql -u root -p    start slave; stop slave; change master to master_host='119.29.234.43',master_port=3306,master_user='Edward',master_password='123',master_log_file='mysql-bin.000009',master_log_pos=154; show slave status\G;

 

實現同步數據庫

主機數據庫創建:

在主機上登錄MySQL

mysql -u root -p           打開數據庫,接下來輸入數據庫密碼

root                輸入密碼后進入數據庫

查看數據庫:          show databases;
創建數據庫並設置編碼UTF8:     CREATE DATABASE `db_zhanye_sm` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

{ 備注:sql文件寫入數據庫:source ~/db_zhanye_sm.sql  其中"~/"是路徑  db_zhanye_sm.sql是sql文件名,需要借助軟件(例如:FlashFXP)把sql文件上傳到服務器,才能寫入,這里不詳述;采取新建數據庫操作測試  }

查看數據庫:          show databases;
選定數據庫:          use db_zhanye_sm;

添加一張表並插入數據:

 

CREATE TABLE `departments` (
  `dept_id` int(11) NOT NULL,
  `dept_name` varchar(30) DEFAULT NULL,
  PRIMARY KEY (`dept_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `departments` VALUES ('1', '生產部');
INSERT INTO `departments` VALUES ('2', '質量管理部');
INSERT INTO `departments` VALUES ('3', '技術部');
INSERT INTO `departments` VALUES ('4', '綜合管理部');

 

 

從機數據庫創建,查看同步:

在從機上登錄MySQL

mysql -u root -p           打開數據庫,接下來輸入數據庫密碼

root                輸入密碼后進入數據庫

查看數據庫:          show databases;
創建數據庫並設置編碼UTF8:     CREATE DATABASE `db_zhanye_sm` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

選定數據庫:          use db_zhanye_sm;

查看所有表:(查看到表即是成功)  show tables; 

查看departments表的數據,主機添加數據即可重新查即可看到新數據:  

                select * from departments;

 

 

附:雲服務器安全規則配置詳情

騰訊雲:
1、設置主數據庫外網訪問權限。
a、設置3306端口外部訪問權限。(修改/etc/mysql/mysql/mysql.conf.d/文件夾中的mysqld.cnf文件,
將bind_address的值由'127.0.0.1'改成你騰訊雲內網IP地址)
b、重啟mysql服務器,然后輸入netstat -anpt|grep 3306檢查3306端口是否顯示騰訊雲的內網IP

 


2、阿里雲
修改主機/etc/mysql/mysql.cnf.d/mysqld.cnf文件,將bind_address注釋掉
添加安全組規則:
入方向:
協議類型選擇My SQL
授權類型改為地址段訪問
授權對象輸入:0.0.0.0/0


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM