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

溫馨提示×

溫馨提示×

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

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

MySQL主從復制類型、過程和讀寫分離

發布時間:2020-04-21 16:14:18 來源:億速云 閱讀:269 作者:三月 欄目:云計算

下文給大家帶來MySQL主從復制類型、過程和讀寫分離,希望能夠給大家在實際運用中帶來一定的幫助,MYSQL涉及的東西比較多,理論也不多,網上有很多書籍,今天我們就用億速云在行業內累計的經驗做一個解答。

MySQL主從復制的類型
基于語句的復制(默認)
在主云服務器上執行的語句,從服務器執行同樣的語句
基于行的復制
把改變的內容復制到從服務器
混合類型的復制
一旦發現基于語句無法精確復制時,就會采用基于行的復制
主從復制的工作過程

MySQL主從復制類型、過程和讀寫分離

MySQL讀寫分離原理
讀寫分離就是只在主服務器上寫,只在從服務器上讀
主數據庫處理事務性查詢,從而數據庫處理select查詢
數據庫復制被用來把事務性查詢導致的變更同步到集群中的從數據庫

MySQL主從復制類型、過程和讀寫分離

實驗環境
amoeba服務器(192.168.13.160)
master服務器(192.168.13.151)
slave1服務器 (192.168.13.163)
slave2服務器 (192.168.13.145)
client客戶端
1,在master服務器上安裝ntp時間服務器
[root@ameoba ~]# yum install ntp -y   ##安裝時間服務器
[root@master1 ~]# vim /etc/ntp.conf 
##在server下添加
server 127.127.13.0      ##本地是時間源
fudge 127.127.13.0 stratum 8   ##設置時間層級為8

[root@master1 ~]# systemctl start ntpd    ##啟動時間服務
[root@master1 ~]# systemctl stop firewalld   ##關閉防火墻
[root@master1 ~]# setenforce 0
2,在slave1上安裝ntp,ntpdate服務
[root@slave1 ~]# yum install ntp ntpdate -y
[root@slave1 ~]# systemctl start ntpd
[root@slave1 ~]# systemctl stop firewalld
[root@slave1 ~]# setenforce 0
[root@slave1 ~]# /usr/sbin/ntpdate 192.168.13.151    ##同步主服務器時間
29 Nov 16:58:43 ntpdate[4932]: the NTP socket is in use, exiting
3,在slave2上安裝ntp,ntpdate服務
[root@slave2 ~]# yum install ntp ntpdate -y
[root@slave2 ~]# systemctl start ntpd
[root@slave2 ~]# systemctl stop firewalld
[root@slave2 ~]# setenforce 0
[root@slave2 ~]# /usr/sbin/ntpdate 192.168.13.151
29 Nov 17:02:08 ntpdate[4850]: the NTP socket is in use, exiting
4,在master,slave1,slave2上分別安裝MySQL-5.5.24
[root@master1 ~]# mkdir /abc   ##創建掛載點
[root@master1 ~]# mount.cifs //192.168.100.3/LNMP-C7 /abc/   ##遠程掛載
Password for root@//192.168.100.3/LNMP-C7:  
[root@master1 ~]# cd /abc/
[root@master1 abc]# lsmysql-5.5.24
[root@master1 abc]# tar zxvf mysql-5.5.24.tar.gz -C /opt/   ##解壓
[root@master1 opt]# yum install -y \
> gcc gcc-c++ \
> ncurses \
> ncurese-devel \    ##控制終端屏幕顯示的庫
> bison \                 ##語法分析
> make
> cmake                 ##cmake工具
> libaio-devel         ##系統調用來實現異步IO

[root@slave1 opt]# useradd -s /sbin/nologin mysql   ##添加不可登錄的mysql用戶
[root@slave1 opt]# cd /opt/mysql-5.5.24/
[root@slave1 mysql-5.5.24]# mkdir /usr/local/mysql   ##創建安裝目錄
[root@slave1 mysql-5.5.24]# cmake \      ##配置
> -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \    ##安裝路徑
> -DMYSQL_UNIX_ADDR=/home/mysql/mysql.sock \   ##sock文件路徑
> -DDEFAULT_CHARSET=utf8 \      ##字符集
> -DDEFAULT_COLLATION=utf8_general_ci \
> -DWITH_EXTRA_CHARSETS=all \
> -DWITH_MYISAM_STORAGE_ENGINE=1 \     ##存儲引擎
> -DWITH_INNOBASE_STORAGE_ENGINE=1 \
> -DWITH_MEMORY_STORAGE_ENGINE=1 \
> -DWITH_READLINE=1 \
> -DENABLED_LOCAL_INFILE=1 \
> -DMYSQL_DATADIR=/home/mysql \     ##數據文件路徑
> -DMYSQL_USER=mysql \      ##用戶
> -DMYSQL_TCP_PORT=3306    ##端口

[root@slave1 mysql-5.5.24]# make && make install   ##編譯及安裝
[root@master1 mysql-5.5.24]# chown -R mysql.mysql /usr/local/mysql   ##設置mysql屬主屬組
[root@master1 mysql-5.5.24]# vim /etc/profile   ##配置環境變量便于系統識別
export PATH=$PATH:/usr/local/mysql/bin/
[root@master1 mysql-5.5.24]# source /etc/profile   ##刷新配置文件
[root@master1 mysql-5.5.24]# cp support-files/my-medium.cnf /etc/my.cnf   ##主配置文件
cp:是否覆蓋"/etc/my.cnf"? yes
[root@master1 mysql-5.5.24]# cp support-files/mysql.server /etc/init.d/mysqld   ##啟動文件
[root@master1 mysql-5.5.24]# chmod 755 /etc/init.d/mysqld    ##設置權限
[root@master1 mysql-5.5.24]# chkconfig --add /etc/init.d/mysqld    ##添加到service管理中
[root@master1 mysql-5.5.24]# chkconfig mysqld --level 35 on   ##開機自啟動
[root@master1 mysql-5.5.24]# /usr/local/mysql/scripts/mysql_install_db \   ##初始化數據庫
> --user=mysql \
> --ldata=/var/lib/mysql \
> --basedir=/usr/local/mysql \
> --datadir=/home/mysql

[root@master1 mysql-5.5.24]# vim /etc/init.d/mysqld    ##編輯啟動腳本文件
basedir=/usr/local/mysql   ##找到此處添加路徑
datadir=/home/mysql
[root@master1 mysql-5.5.24]# service mysqld start    ##啟動MySQL
Starting MySQL.. SUCCESS! 
[root@master1 mysql-5.5.24]# mysqladmin -u root password 'abc123'  ##設置密碼
5,配置master主服務器
[root@master1 mysql-5.5.24]# vim /etc/my.cnf
server-id       = 11     ##服務ID號
log-bin=master-bin                         ##主服務器日志文件
log-slave-updates=true                   ##從服務器更新二進制日志
[root@master1 mysql-5.5.24]# service mysqld restart   ##重啟MySQL服務
Shutting down MySQL. SUCCESS! 
Starting MySQL.. SUCCESS!
[root@master1 ~]# mysql -uroot -pabc123   ##進入數據庫

mysql> GRANT REPLICATION SLAVE ON *.* TO 'myslave'@'192.168.13.%' IDENTIFIED BY '123456';
##給從服務器提權復制權限,名為myslave密碼123456對于13段網段
Query OK, 0 rows affected (0.01 sec)

mysql> FLUSH PRIVILEGES;    ##刷新提權
Query OK, 0 rows affected (0.00 sec)

mysql> show master status;   ##查看主服務器狀態
+-------------------+----------+--------------+------------------+
| File              | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-------------------+----------+--------------+------------------+
| master-bin.000002 |      338 |              |                  |
+-------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
6,配置slave1從服務器
[root@slave1 mysql-5.5.24]# vim /etc/my.cnf
server-id       = 22              ##另外一臺為23

relay-log=relay-log-bin                         ##從主服務器上同步日志文件記錄到本地
relay-log-index=slave-relay-bin.index           ##定義relay-log的位置和名稱
[root@slave1 mysql-5.5.24]# service mysqld restart    ##重新服務
Shutting down MySQL. SUCCESS!  
Starting MySQL.. SUCCESS!
[root@slave1 mysql-5.5.24]# mysql -uroot -pabc123

mysql> change master to master_host='192.168.13.151',master_user='myslave',master_password='123456',master_log_file='master-bin.000002',master_log_pos=338;
##同步主服務器二進制文件和位置使用授權的賬號密碼
Query OK, 0 rows affected (0.00 sec)

mysql> start slave;     ##開啟同步
Query OK, 0 rows affected (0.01 sec)

mysql> show slave status\G;   ##查看狀態
                            Master_Log_File: master-bin.000002
                    Read_Master_Log_Pos: 338
                             Relay_Log_File: relay-log-bin.000001
                                Relay_Log_Pos: 4
                Relay_Master_Log_File: master-bin.000002
                         Slave_IO_Running: Yes
                        Slave_SQL_Running: Yes
7,配置slave2從服務器
[root@slave2 mysql-5.5.24]# vim /etc/my.cnf
server-id       = 23              

relay-log=relay-log-bin                         ##從主服務器上同步日志文件記錄到本地
relay-log-index=slave-relay-bin.index           ##定義relay-log的位置和名稱
[root@slave2 mysql-5.5.24]# service mysqld restart    ##重新服務
Shutting down MySQL. SUCCESS!  
Starting MySQL.. SUCCESS!
[root@slave2 mysql-5.5.24]# mysql -uroot -pabc123

mysql> change master to master_host='192.168.13.151',master_user='myslave',master_password='123456',master_log_file='master-bin.000002',master_log_pos=338;
##同步主服務器二進制文件和位置使用授權的賬號密碼
Query OK, 0 rows affected (0.00 sec)

mysql> start slave;    ##開啟同步
Query OK, 0 rows affected (0.01 sec)

mysql> show slave status\G;    ##查看狀態
                            Master_Log_File: master-bin.000002
                    Read_Master_Log_Pos: 338
                             Relay_Log_File: relay-log-bin.000001
                                Relay_Log_Pos: 4
                Relay_Master_Log_File: master-bin.000002
                         Slave_IO_Running: Yes
                        Slave_SQL_Running: Yes
8,測試同步情況
mysql> create database school;    ##創建school數據庫
Query OK, 1 row affected (0.00 sec)
mysql> show databases;   ##查看數據庫
+--------------------+
| Database           |
+--------------------+
| information_schema |
| #mysql50#.mozilla  |
| mysql              |
| performance_schema |
| school             |
| test               |
+--------------------+
6 rows in set (0.01 sec)
mysql> show databases;   ##查看數據庫
+--------------------+
| Database           |
+--------------------+
| information_schema |
| #mysql50#.mozilla  |
| mysql              |
| performance_schema |
| school             |
| test               |
+--------------------+
6 rows in set (0.01 sec)
實現主從同步
9,配置amoeba服務器
[root@amoeba ~]# systemctl stop firewalld.service   ##關閉防火墻
[root@amoeba ~]# setenforce 0
[root@amoeba ~]# mount.cifs //192.168.100.3/LNMP-C7 /mnt/  ##掛載
Password for root@//192.168.100.3/LNMP-C7:  
[root@amoeba ~]# cd /mnt/
[root@amoeba mnt]# ls
[root@amoeba mnt]# cp jdk-6u14-linux-x64.bin /usr/local/   ##復制jdk二進制文件到/usr/local下
[root@amoeba mnt]# cd /usr/local/
[root@amoeba local]# ./jdk-6u14-linux-x64.bin  ##直接執行安裝
Do you agree to the above license terms? [yes or no]
yes   ##選擇yes進行安裝
Press Enter to continue.....
##回車繼續
[root@amoeba local]# mv jdk1.6.0_14/ /usr/local/jdk1.6   ##簡化文件名
[root@amoeba local]# vim /etc/profile   ##設置環境變量
##末行插入
export JAVA_HOME=/usr/local/jdk1.6  ##家目錄
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib ##class環境變量
export PATH=$JAVA_HOME/lib:$JAVA_HOME/jre/bin/:$PATH:$HOME/bin   ##環境變量
export AMOEBA_HOME=/usr/local/amoeba   ##amoeba家目錄
export PATH=$PATH:$AMOEBA_HOME/bin   ##環境變量
[root@amoeba local]# source /etc/profile   ##刷新配置文件
[root@amoeba local]# mkdir /usr/local/amoeba   ##創建amoeba目錄
[root@amoeba local]# cd /mnt/
[root@amoeba mnt]# tar zxvf amoeba-mysql-binary-2.2.0.tar.gz -C /usr/local/amoeba   ##解壓amoeba
[root@amoeba mnt]# chmod -R 755 /usr/local/amoeba/   ##設置權限
[root@amoeba mnt]# /usr/local/amoeba/bin/amoeba     ##檢查是否安裝成功
amoeba start|stop
10,在master,slave1,slave2上提權amoeba訪問權限
grant all on *.* to test@'192.168.13.%' identified by '123.com';
##給amoeba訪問權限用戶test密碼123.com
11,回到amoeba服務器修改配置文件
[root@amoeba conf]# vim amoeba.xml  ##修改主配置文件
---30行--

 <property name="user">amoeba</property>    ##從服務器同步主服務器的用戶密碼
----32行---------
 <property name="password">123456</property>

---117-去掉注釋-
 <property name="defaultPool">master</property>
 <property name="writePool">master</property>
 <property name="readPool">slaves</property>

[root@amoeba conf]# vim conf/dbServers.xml   ##配置數據庫配置文件

--26-29--去掉注釋--
 <property name="user">test</property>

 <property name="password">123.com</property>

-----42-主服務器地址---
<dbServer name="master"  parent="abstractServer">
 <property name="ipAddress">192.168.13.151</property>
--52-從服務器主機名-
<dbServer name="slave1"  parent="abstractServer">
 <property name="ipAddress">192.168.13.163</property>
 ##復制6行添加slave2
 <dbServer name="slave2"  parent="abstractServer">
 <property name="ipAddress">192.168.13.145</property>
--65行左右--
 <dbServer name="slaves" virtual="true">
 <poolConfig class="com.meidusa.amoeba.server.MultipleServerPool">

--末尾--
<property name="poolNames">slave1,slave2</property>
 </poolConfig>
[root@amoeba conf]# /usr/local/amoeba/bin/amoeba start&   ##開啟amoeba服務
[root@amoeba ~]# netstat -anpt | grep java   ##開啟另一個終端查看開啟情況
tcp6       0      0 127.0.0.1:26268         :::*                    LISTEN      40925/java          
tcp6       0      0 :::8066                 :::*                    LISTEN      40925/java          
tcp6       0      0 192.168.13.160:34090    192.168.13.151:3306     ESTABLISHED 40925/java          
tcp6       0      0 192.168.13.160:33866    192.168.13.145:3306     ESTABLISHED 40925/java          
tcp6       0      0 192.168.13.160:55984    192.168.13.163:3306     ESTABLISHED 40925/java    
12,在客戶端測試讀寫分離
[root@client ~]# yum install mysql -y   ##安裝測試數據庫
[root@client ~]# mysql -u amoeba -p123456 -h 192.168.13.160 -P8066  
##使用amoeba賬戶密碼登錄amoeba
MySQL [(none)]> show databases;   ##查看數據庫
+--------------------+
| Database           |
+--------------------+
| information_schema |
| #mysql50#.mozilla  |
| mysql              |
| performance_schema |
| school             |
| test               |
+--------------------+
6 rows in set (0.00 sec)

MySQL [(none)]> use school;   ##使用數據庫
Database changed
MySQL [school]> create table info (    ##創建表
        -> id int(4) not null primary key,
        -> name varchar(10) not null,
        -> score decimal(4,1) not null);
Query OK, 0 rows affected (0.02 sec)
mysql> use school;    ##使用數據庫
Database changed
mysql> show tables;  ##查看表
+------------------+
| Tables_in_school |
+------------------+
| info             |
+------------------+
1 row in set (0.00 sec)
mysql> stop slave;
Query OK, 0 rows affected (0.01 sec)
MySQL [school]> insert into info (id,name,score) values (1,'zhangsan',88);  ##插入數據內容
Query OK, 1 row affected (0.03 sec)
mysql> select * from info;
+----+----------+-------+
| id | name     | score |
+----+----------+-------+
|  1 | zhangsan |  88.0 |
+----+----------+-------+
1 row in set (0.00 sec)
mysql> select * from info;  ##從服務器上沒有寫入
Empty set (0.00 sec)
MySQL [school]> select * from info;   ##沒有查看到寫入的內容
Empty set (0.01 sec)
mysql> insert into info (id,name,score) values (2,'lisi',70);
Query OK, 1 row affected (0.00 sec)
mysql> insert into info (id,name,score) values (3,'wuwang',60);
Query OK, 1 row affected (0.00 sec)
MySQL [school]> select * from info;
+----+--------+-------+
| id | name   | score |
+----+--------+-------+
|  3 | wuwang |  60.0 |
+----+--------+-------+
1 row in set (0.00 sec)

MySQL [school]> select * from info;
+----+------+-------+
| id | name | score |
+----+------+-------+
|  2 | lisi |  70.0 |
+----+------+-------+

1 row in set (0.00 sec)


看了以上關于MySQL主從復制類型、過程和讀寫分離,如果大家還有什么地方需要了解的可以在億速云行業資訊里查找自己感興趣的或者找我們的專業技術工程師解答的,億速云技術工程師在行業內擁有十幾年的經驗了。

向AI問一下細節

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

AI

湟中县| 沙坪坝区| 江陵县| 达孜县| 辽阳市| 西贡区| 东城区| 田林县| 海安县| 托克逊县| 神农架林区| 灵寿县| 盐源县| 涞源县| 石屏县| 公主岭市| 嘉鱼县| 太白县| 临夏市| 丰城市| 微山县| 申扎县| 伊宁县| 通化县| 稷山县| 上饶县| 黄石市| 南宁市| 郯城县| 大兴区| 博乐市| 双柏县| 南平市| 昌黎县| 甘泉县| 登封市| 游戏| 封丘县| 绥芬河市| 兴义市| 甘孜|