首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Jeson聊DBA晋级之路-Mysql主从搭建

Mysql的主从架构模式,是很多企业广泛使用,并且大家所广为熟知的一种架构模式,从主从模式搭建配合MHA实现故障自动化的感知迁移,这都是DBA所应该熟练掌握的技能。这周Jeson老师将准备两篇文章,系统性的介绍给大家Mysql主从+MHA的架构实现和搭建。

好了,今天我们先来聊一聊Mysql的主从部分。

一、Mysql主从理论部分:

mysql主从复制用途

·实时灾备,用于故障切换

·读写分离,提供查询服务

·备份,避免影响业务

主从部署必要条件:

·主库开启binlog日志(设置log-bin参数)

·主从server-id不同

·从库服务器能连通主库

存在的问题:

·主库宕机后,数据可能丢失

·从库只有一个sql Thread,主库写压力大,复制很可能延时

解决方法:

·半同步复制、或者全同步复制 要求:Mysql5.7版本

·并行复制----解决从库复制延迟的问题 要求:Mysql5.6版本以上,建议5.7版

主从同步原理:

从库生成两个线程,一个I/O线程,一个SQL线程;

i/o线程去请求主库 的binlog,并将得到的binlog日志写到relay log(中继日志) 文件中;

主库会生成一个 log dump 线程,用来给从库 i/o线程传binlog;

SQL 线程,会读取relay log文件中的日志,并解析成具体操作,来实现主从的操作一致,而最终数据一致

二、Mysql主从配置步骤:

1、编辑数据库配置文件my.cnf,一般在/etc/目录下

#vi /etc/my.cnf

在[mysqld]的下面加入下面代码:

log-bin=mysql-bin

server-id=1#注意:保证从服务器的该值不同,可以自定义

innodb_flush_log_at_trx_commit=1

sync_binlog=1

binlog-do-db=wordpress#表示只备份该数据库,可以不写,则为全部

binlog_ignore_db=mysql#表示忽略备份mysql,可以不写,则为不忽略

2、重启mysql服务器:

/etc/init.d/mysqld restart

3、登录MySQL主服务器。

1.#mysql -uroot -p

在主服务器新建一个用户赋予“REPLICATION SLAVE”的权限。你不需要再赋予其它的权限。

把X.X.X.X替换为从服务器的IP,

把####替换成自定义的用户名

password:为服务器mysql密码

1.mysql> CREATE USER '####'@ 'X.X.X.X' IDENTIFIED BY 'password';

2.mysql> GRANT REPLICATION SLAVE ON *.* TO '####'@'X.X.X.X' IDENTIFIED BY 'password';

4、行以下命令锁定数据库以防止写入数据

mysql>FLUSH TABLES WITH READ LOCK;

5、退出mysql命令行,导出数据库

#mysqldump -u root -p123456 --all-databases --lock-tables=false -- > /root/all.sql

6、使用scp命令传输数据库文件all.sql到从服务器

#scp /root/all.sql root@xxxxx:/root把X.X.X.X替换为从服务器的IP,

7、再次连接数据库进入mysql命令行查看master状态

mysql>show master status;

请记下显示的信息,配置从服务器会用到。

+——————+———-+————–+——————+

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+——————+———-+————–+——————+

| mysql-bin.000003 | 1001741 | dbispconfig | mysql |

+——————+———-+————–+——————+

1 row in set (0.00 sec)

8、解锁数据表

1.mysql>UNLOCK TABLES;

配置从服务器:

1、导入主服务器的数据库数据

#mysql -u root -p123456

2、编辑配置文件my.cnf,在[mysqld]下面加入

server-id=2

#relay-log=relay-log-bin

#relay-log-index=slave-relay-bin.index

3、保存文件并重启mysqld

#service mysqld restart //或者/etc/init.d/mysqld restart

4、登录mysql服务器,执行以下命令

mysql> CHANGE MASTER TO

MASTER_HOST='X.X.X.X', #主服务器IP

MASTER_USER='user', #设置主服务器访问权限的用户名和#####一致

MASTER_PASSWORD='password',#密码 ;同上面password 一致

MASTER_PORT=3306,#端口号 (如果未曾修改,默认即可)

MASTER_LOG_FILE='mysql-bin.000001',

#主要从哪个版本进行复制,建议从000001开始版本在主服务器

show master status下面的File

MASTER_LOG_POS=98,

# 控制从MASTER_LOG_FILE中具体哪个位置来拷贝

MASTER_CONNECT_RETRY=10;# 10秒复制一次

5、启动slave进程。

mysql>START SLAVE;

6、查看slave:

mysql > show slave status\G;

7、测试:

在主服务器中,新建一个数据库,查看从服务器是否更新

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180503G0HSP900?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券