Mysql 主从

介绍

MySQL数据库设置读写分离,可以使对数据库的写操作和读操作在不同服务器上执行,提高并发量和相应速度。

搭建环境

我使用了VMware,分别在两台虚拟机上装的Mysql数据库。
MySQL安装参考: http://www.jianshu.com/p/78f05e1420c6
开放服务器端口参考: https://www.jianshu.com/p/35c1accddfb5
Github 项目示例地址:https://github.com/tanghuirepository/spring-mybatis.git

主库master
    192.168.116.129         mysql版本  5.7
从库slave
      192.168.116.135       mysql版本  5.7

配置
创建用户
在主库创建一个用户,用于从库读取主库的执行日志。

     需要在mysql命令行里执行,需要先登录命令行
    GRANT REPLICATION SLAVE ON *.* TO 'root'@'192.168.116.129' IDENTIFIED BY 'test';

修改my.cnf
linux系统在 /etc/my.cnf ,mac系统在安装的MySQL的目录,windows也一样。
在my.cnf文件里增加一下代码

    server-id = 1  //数据库ID号
    log-bin=master-bin  //启用二进制日志
    log-bin-index=master-bin.index  //二进制日志名称
查看状态

登陆mysql命令行后,输入show master status,如果出现下面信息代表主库配置完成

  mysql> show master status;
  +-------------------+----------+--------------+------------------+
  | File              | Position | Binlog_Do_DB | Binlog_Ignore_DB |
  +-------------------+----------+--------------+------------------+
  | master-bin.000001 |   672675 |              |                  |
  +-------------------+----------+--------------+------------------+
  1 row in set (0.00 sec)
  记录下File和Position两个内容,从库配置的时候会用到这个。
从库配置
 在本机电脑(从库)上找到my.cnf文件,然后添加以下内容,这个配置和主库的配置意思是一样的

  server-id=2
  relay-log=slave-relay-bin
  relay-log-index=slave-relay-bin.index
  注意确定和主库的位置一样,我就因为位置放置在末尾导致一直关联不上。
第一次搭建主从需要手动进行数据同步:

把数据备份到mysql.bak.sql文件

  [root@server01 mysql]#mysqldump -uroot -p -hlocalhost > mysql.bak.sql 
    这里注意一点:数据库备份一定要定期进行,可以用shell脚本或者python脚本,都比较方便,确保数据万无一失 
3.查看master 状态
  mysql> show master status; 
  +-------------------+----------+--------------+-------------------------------+ 
  | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | 
  +-------------------+----------+--------------+-------------------------------+ 
  | mysqld-bin.000001 | 3260 | | mysql,test,information_schema | 
  +-------------------+----------+--------------+-------------------------------+ 
  1 row in set (0.00 sec) 
4.把mysql备份文件传到从库机器,进行数据恢复
[root@server01 mysql]# mysqldump -uroot -p -hlocalhost > mysql.bak.sql 
再通过MobaXterm 手动将这个sql文件放入到从Mysql所在服务器的/tmp文件夹下
5.停止从库的状态
    mysql> stop slave; 
6.然后到从库执行mysql命令,导入数据备份
  mysql> source /tmp/mysql.bak.sql 
7.关联主从库
    最后一步很重要,登录从库的MySQL命令行,执行以下代码,主要是关联主库的一些信息。
重启master库:service mysqld restart
mysql> show master status;  //查看主库的信息

  +------------------+----------+--------------+------------------+

| File             | Position | Binlog_Do_DB |Binlog_Ignore_DB |

+------------------+----------+--------------+------------------+

| mysql-bin.000001 |       98 |              |                  |

+------------------+----------+--------------+------------------+
在从库的mysql的命令操作:
  mysql> slave start;

 mysql> show slave status\G

  change master to master_host='192.168.116.129',   #Master 服务器Ip
  master_port=3306,    
  master_user='root',
  master_password='root', 
  master_log_file='master-bin.000001',  #Master日志文件名 File            
master_log_pos=98; #Master日志同步开始位置 Position

注意是否执行成功,如果执行失败就好好检查下代码,看看哪里写错了。
如果执行正常,就启动从库slave,并查看下连接状态。

需要再mysql命令行执行
show slave status\G; //查看slave连接状态
状态信息

           Slave_IO_State: Waiting for master to send event
              Master_Host: 192.168.116.129 
              Master_User: test
              Master_Port: 3306
            Connect_Retry: 60
          Master_Log_File: master-bin.000001
      Read_Master_Log_Pos: 672913
           Relay_Log_File: slave-relay-bin.000044
            Relay_Log_Pos: 504
    Relay_Master_Log_File: master-bin.000001
         Slave_IO_Running: Yes
        Slave_SQL_Running: Yes

注意!
这两个状态必须为Yes才算成功,如果不是,则检查上面步骤那一步配置错误。

    Slave_IO_Running: Yes
    Slave_SQL_Running: Yes
8.重新开启从同步
   mysql> stop slave; 
9.查看同步状态
  mysql> show slave status\G 查看: 
  Slave_IO_Running: Yes 
  Slave_SQL_Running: Yes 

好了,同步完成啦。

测试
现在你在主库上添加一条数据,看看从库上是否有一个相同的数据,如果有则配置正常,功能使用正常。

主从分离的原理主要是:开启主库的执行日志功能,然后从库读取主库的日志信息,然后将主库执行过的SQL语句在从库上面执行一遍就做到主从分离,主从数据保持一直,备份数据的功能。
参考原文地址:https://www.jianshu.com/p/65e8a31fbab8
参考原文地址:https://www.cnblogs.com/sandea/p/5208373.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容