在Mysql5.7中如何搭建主從複製?以下這篇文章跟大家介紹Mysql5.7-主從複製搭建步驟,有需要的朋友可以學習了解一下~
#主從複製可以實現對資料庫備份和讀寫分離:
為了避免服務的不可用以及保障資料的安全可靠性,我們至少需要部署兩台或兩台以上伺服器來儲存資料庫數據,也就是我們需要將資料複製多份部署在多台不同的伺服器上,即使有一台伺服器發生故障了,其他伺服器依然可以繼續提供服務.
MySQL提供了主從複製功能以提高服務的可用性與資料的安全可靠性.
主從複製是指伺服器分為主伺服器和從伺服器,主伺服器負責讀取和寫入,從伺服器只負責閱讀,主從複製也叫master /slave,master是主,slave是從,但是並沒有強制,也就是說從也可以寫,主也可以讀,只不過一般我們不這麼做。
一主多從架構:
多主多從架構:
主從複製原理:
搭建環境:1. Linux 版本CentOS release 6.9 (Final)
2. mysql-5.7.26-linux-glibc2.12- x86_64.tar.gz
下載位址
1.解壓縮mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz
#/usr/local下解压 tar xzvf mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz #重命名文件 mv mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz mysql
#2.建立多實例資料目錄
cd /usr/local/mysql mkdir data cd data #主 mkdir 3306 #从 mkdir 3307
#3.資料庫初始化
#mysql 安装bin目录下执行 #initialize-insecure 表示不生成MySQL数据库root用户的随机密码,即root密码为空 #初始化3306 ./mysqld --initialize-insecure --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data/3306 --user=mysql #初始化3307 ./mysqld --initialize-insecure --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data/3307 --user=mysql
若發生錯誤執行yum install libaio-devel.x86_64
yum -y install numactl
4.建立各個資料庫的設定檔my.cnf
注意:
1.建議在linux下建立檔案防止windows 與linux 編碼不一致
2.不同的實例下設定要修改埠號
3.將修改好的my.cnf分別放至3306、3307資料夾內
[client] port = 3306 socket = /usr/local/mysql/data/3306/mysql.sock default-character-set=utf8 [mysqld] port = 3306 socket = /usr/local/mysql/data/3306/mysql.sock datadir = /usr/local/mysql/data/3306 log-error = /usr/local/mysql/data/3306/error.log pid-file = /usr/local/mysql/data/3306/mysql.pid character-set-server=utf8 lower_case_table_names=1 autocommit = 1 log-bin=mysql-bin server-id=3306
5.多實例啟動
切換到/usr/local/mysql-5.7.24/bin目錄下,使用msyqld_safe 指令指定設定檔並啟動MySQL服務:
#其中 --defaults-file 是指定配置文件,& 符合表示后台启动 ./mysqld_safe --defaults-file=/usr/local/mysql/data/3306/my.cnf & ./mysqld_safe --defaults-file=/usr/local/mysql/data/3307/my.cnf &
6.資料庫初始化配置
分別在各個實例內進行配置如3306:
#客户端连接 ./mysql -uroot -p -P3306 -h127.0.0.1 #修改Mysql密码 alter user 'root'@'localhost' identified by 'root'; #授权远程访问(这样远程客户端才能访问) grant all privileges on *.* to root@'%' identified by 'root'; #刷新配置 flush privileges;
客戶端連線測試
7.資料庫唯一id配置
1.確定各個執行個體正常啟動無誤後進行主從設定
2.關閉實例分別在各個實例的my.cnf檔案加入以下設定
##
#/usr/local/mysql/bin 关闭实例 ./mysqladmin -uroot -p -P3307 -h127.0.0.1 shutdown ./mysqladmin -uroot -p -P3306 -h127.0.0.1 shutdown #新加的配置 log-bin=mysql-bin #表示启用二进制日志 server-id=3307 #表示server编号,编号要唯一 建议和端口保持一致
加入完畢後啟動各個實例
./mysqld_safe --defaults-file=/usr/local/mysql/data/3306/my.cnf & ./mysqld_safe --defaults-file=/usr/local/mysql/data/3307/my.cnf &
7.主機設定
1.在主伺服器上建立複製資料的帳號並授權
#在/usr/local/mysql/bin目录下执行 ./mysql -uroot -p -P3306 -h127.0.0.1 grant replication slave on *.* to 'copy'@'%' identified by 'root';
2.查看主伺服器狀態
# mysql主服务器默认初始值: # File:mysql-bin.000001 # Position:154 show master status;
3.如果主服務狀態不是初始狀態,需要重設狀態
reset master;
#7.從機設定
1.需要登入3306|3307|3308的從機客戶端
#在/usr/local/mysql/bin目录下执行 多台从机‘|’分隔 ./mysql -uroot -p -P3308|3309|3310 -h127.0.0.1
2.查看從機狀態
#初始状态:Empty set show slave status;
#3.若不是初始狀態,重設
stop slave; #停止复制,相当于终止从服务器上的IO和SQL线程 reset slave;
4.設定從機設定主機設定
change master to master_host='主机ip',master_user='copy', master_port=主机端口,master_password='连接主机密码', master_log_file='mysql-bin.000001',master_log_pos=154;
5.執行開始複製指令
start slave;
6.查看從機狀態
show slave status \G;
7.测试主从复制
在主数据库中进行创建表,从库同步就算搭建成功了!
若你在从库进行写操作,则从服务器不再同步主库数据,在从库中执行此命令即可解决!
stop slave; set global sql_slave_skip_counter =1; start slave; show slave status\G;
若主从复制速度较慢的话,执行此命令
slave-parallel-type=LOGICAL_CLOCK slave-parallel-workers=16 master_info_repository=TABLE relay_log_info_repository=TABLE relay_log_recovery=ON
相关学习推荐:mysql教程(视频)
以上是手把手教你在Mysql5.7中搭建主從複製的詳細內容。更多資訊請關注PHP中文網其他相關文章!