雲服務器MySQL主從配置徹底解讀

配置時環境:騰訊雲服務器,雲服務器上的MySQL5.7,未配置過主從,如環境不一致,請謹慎操做。個人Master主機(如下稱主機)公網IP是119.29.234.4三、內網ip是10.104.190.222,Slave從機(如下稱從機)的IP不用關心(主機設權限爲全部IP均可以訪問,使用」%「實現),請修改成你本身的並在下面代碼包含公網IP的地方進行相應的修改。(藍色字體是全部操做主機的命令步驟,綠色字體是操做從機的命令步驟,底部是供老鳥使用命令集合)mysql

騰訊雲服務器如圖所示:sql

具體步驟:數據庫

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

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;

 

 

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

騰訊雲:
一、設置主數據庫外網訪問權限。
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

 

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

相關文章
相關標籤/搜索