帅帅的 林财钦_|

园龄:粉丝:关注:

Mysql 主从复制(同步)

一、设计思路

准备两个5.7版本的MySQL,一个用作主数据库,另一个用作从数据库。
把主数据库做为写入数据库,从数据库作为读数据库。

image

二、具体步骤

准备两台数据库,可以本地配置两台Mysql数据库或者局域网两台Mysql数据库。
1.先把你的mysql目录拷贝复制一份,复制出来的那份取名为mysql-slave。
本地数据库之间

image

2.先修改主数据库的my.ini文件,添加以下代码,主要是配置要同步的数据库和屏蔽要同步的数据库:
点击查看代码
[mysqld]
port=3306
log-bin=mysql-bin
server-id=1
#设置需要同步的数据库
binlog-do-db=pump_station
#屏蔽系统库同步
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
max_allowed_packet=500M
expire_logs_days=2

image

3.然后将主数据库注册为系统服务。
点击查看代码
备注:--defaults-file= 后面查看ini配置文件具体位置
mysqld install mysql-master --defaults-file="D:\xampp\mysql\bin\my.ini"

4.然后修改从数据库的my.ini文件,把启动端口和从数据库的路径进行修改:

image

同时加上要同步的数据库表配置,记得server-id也要修改,改成和主数据库不一致就行:

image

点击查看代码
[mysqld]
server-id=2
#设置需要同步的数据库
replicate_wild_do_table=pump_station.%
#屏蔽系统库同步
replicate_wild_ignore_table=mysql.%
replicate_wild_ignore_table=information_schema.%
replicate_wild_ignore_table=performance_schema.%
#端口号
port = 3306
#最大连接数
max_connections=200

5.改完后同样把从数据库注册为系统服务。
点击查看代码
mysqld install mysql-slave --defaults-file="D:\xampp\mysql-slave\bin\my.ini"

然后重启主从数据库两个服务。

image

进入主从两数据库目录的data目录下,修改auto.cnf文件,把两个uuid改的不一样就行,这里,我是把最后一位的数字进行了修改。

image

6.给主库赋予主从复制的权限:(备注:局域网这里需要注意下)
点击查看代码
以下二选一:
# 本地Mysql 同步
GRANT REPLICATION SLAVE ON *.* TO 'root'@'%' IDENTIFIED BY 'root';(主库控制台)

# 局域网Mysql同步
GRANT REPLICATION SLAVE ON *.* TO 'flood'@'172.16.10.249' IDENTIFIED BY 'Xmszps123'; (主库控制台)

然后刷新权限
点击查看代码
FLUSH PRIVILEGES;

image

然后查看主库的确认位点,下图中的File和Position要记住,后面从库配置时候要用到:
点击查看代码
show master status;

image

7.打开从库的命令窗口,依次输入以下命令:
先停止同步:
点击查看代码
STOP SLAVE;

然后配置从库指向到主库,使用上一步记录的文件名File以及位点Position:(备注:局域网这里需要注意下)
点击查看代码
以下二选一:
# 本地Mysql 同步
CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000002',MASTER_LOG_POS=1178,MASTER_HOST='localhost',MASTER_USER='root',MASTER_PASSWORD='',MASTER_PORT=
3306;(从库控制台)

# 局域网Mysql 同步
CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000004',MASTER_LOG_POS=602,MASTER_HOST='192.168.50.62',MASTER_USER='root',MASTER_PASSWORD='root',MASTER_PORT=3306;(从库控制台)

然后开启同步:
点击查看代码
START SLAVE;

image

然后查看从库的同步状态:
点击查看代码
show slave status;

Slave_IO_Runing和Slave_SQL_Runing都为Yes说明同步成功,如果不为Yes,请检查error_log。

image

PS:如果之前此从库已有主库指向 需要先执行以下命令清空:然后 重回第7步骤。
点击查看代码
STOP SLAVE IO_THREAD FOR CHANNEL '';
reset slave all;

8.这样就完成了MySQL数据库主从复制的配置了,当你在主库中对db_user数据库中的表修改数据时候,从库中db_user数据库对应表中的数据也会跟着变化了。

三、可能遇到的报错

报错一.Slave_IO_Runing和Slave_SQL_Runing有一个为No。
	1.程序可能在slave上进行了写操作
	2.也可能是slave机器重起后,事务回滚造成的.
	一般是事务回滚造成的:
解决办法:
mysql> stop slave ;
mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
mysql> start slave ;

四、参考博客

https://blog.csdn.net/dgfdhgghd/article/details/128427294
https://blog.csdn.net/qq_27991253/article/details/128017412

本文作者:独而不孤

本文链接:https://www.cnblogs.com/lcaiqin/p/17701998.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   林财钦  阅读(49)  评论(0编辑  收藏  举报
(评论功能已被禁用)
评论
收藏
关注
推荐
深色
回顶
收起
点击右上角即可分享
微信分享提示
  1. 1 404 not found REOL
404 not found - REOL
00:00 / 00:00
An audio error has occurred.

作曲 : Reol

作词 : Reol

fade away...do over again...

fade away...do over again...

歌い始めの一文字目 いつも迷ってる

歌い始めの一文字目 いつも迷ってる

どうせとりとめのないことだけど

伝わらなきゃもっと意味がない

どうしたってこんなに複雑なのに

どうしたってこんなに複雑なのに

噛み砕いてやらなきゃ伝わらない

ほら結局歌詞なんかどうだっていい

僕の音楽なんかこの世になくたっていいんだよ

Everybody don't know why.

Everybody don't know why.

Everybody don't know much.

僕は気にしない 君は気付かない

何処にももういないいない

Everybody don't know why.

Everybody don't know why.

Everybody don't know much.

忘れていく 忘れられていく

We don't know,We don't know.

目の前 広がる現実世界がまた歪んだ

目の前 広がる現実世界がまた歪んだ

何度リセットしても

僕は僕以外の誰かには生まれ変われない

「そんなの知ってるよ」

気になるあの子の噂話も

シニカル標的は次の速報

麻痺しちゃってるこっからエスケープ

麻痺しちゃってるこっからエスケープ

遠く遠くまで行けるよ

安定なんてない 不安定な世界

安定なんてない 不安定な世界

安定なんてない きっと明日には忘れるよ

fade away...do over again...

fade away...do over again...

そうだ世界はどこかがいつも嘘くさい

そうだ世界はどこかがいつも嘘くさい

綺麗事だけじゃ大事な人たちすら守れない

くだらない 僕らみんなどこか狂ってるみたい

本当のことなんか全部神様も知らない

Everybody don't know why.

Everybody don't know why.

Everybody don't know much.

僕は気にしない 君は気付かない

何処にももういないいない

Everybody don't know why.

Everybody don't know why.

Everybody don't know much.

忘れていく 忘れられていく

We don't know,We don't know.