DBA成长之路---mysql主从同步,读写分离

主从同步

什么是主从同步: 让其他的数据库服务器自动同步正在提供服务的数据库服务器上 的数据。

1 添加授权用户

mysql> grant replication slave on *.* to [email protected]"192.168.4.4" identified by '123456';

2启用binlog日志

[[email protected] ~]# vim /etc/my.cnf

[mysqld]

server_id=3

log-bin=master11

binlog_format="mixed"

重启数据库服务

[[email protected] ~]# systemctl restart mysqld

4 查看日志信息

mysql> show master status;

master11.000001

验证主库提供的授权用户

[[email protected] ~]# mysql -h 192.168.4.3 -u slaveuser -p123456

修改配置文件

[[email protected] ~]# vim /etc/my.cnf

[mysqld]

server_id=4

log-bin=db4

[[email protected] ~]# systemctl restart mysqld

使用本机器的数据管理员登录,指定主库信息

show slave status;

mysql> change master to master_host="192.168.4.3", master_user="slaveuser",master_password="123456",master_log_file="master11.000001",master_log_pos=154;

mysql> show slave status\G;

Master_Log_File: master11.000001

Read_Master_Log_Pos: 154

Slave_IO_Running: No

Slave_SQL_Running: No

mysql> start slave;

mysql> show slave status\G;

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

slave 运行2个线程

Slave_IO:复制master主机 binlog日志文件里的sql到本机的relay-log文件里

Slave_SQL:执行本机relay-log文件里的SQL语句,重现Master的数据操作

从数据库目录下会多的文件

master.info 连接主服务器信息

relay-log.info 中继日志信息

主机名-relay-bin.000000 中继日志文件

主机名-relay-bin.index 中继日志索引

测试主从同步配置

在主库服务器上添加访问数据的用户

mysql> grant all on bbsdb.* to [email protected]"%" identified by '123456';

mysql> show master status;

| master11.000001 |      446

在客户端使用授权用户连接主库,产生的数据在从库也能查到

[[email protected] ~]# mysql -h 192.168.4.3 -uyaya -p123456

MySQL [(none)]> create database bbsdb;

这时在

[[email protected] ~]# 主服务器

[[email protected] ~]# 从服务器

上都会生成相应的表

将从服务器变被独立服务器,关闭同步

mysql> stop slave;

rm -rf master.info  relay-log.info

rm -rf localhost-relay-bin*

故障分析及排除

原因分析

连接不上master数据库服务器

解决办法

检查物理连接ping 检查授权用户

检查是否有防火墙规则

关闭SElinux

或是binlog日志文件指定错误

主从同步结构模式

一主一从

一主多从

主从从

主主结构(互为)

主从同步常用配置参数

写在vim /etc/my.cnf

[mysqld]

选项=值

主库配置文件(对所有的从都有效)

不允许同步的库 binlog_ignore_db=库名1,库名2

只允许同步的库 binlog_do_db=库名1,库名2

[[email protected] ~]# vim /etc/my.cnf

binlog_do_db=dba

[[email protected] ~]# systemctl restart mysqld

从库配置文件(只对本机有效)

只同步的库 replicate_do_db=库名1,库名2

不同步的库 replicate_ignore_db=库名1,库名2

级联复制 log_slave_updates

数据读写分离   maxscale软件  + 一主一从

什么是读写分离: 把客户端访问数据时的查询请求select 和写请求insert 给不同的数据库服务器去处理

写(主服务)

读 (从服务)

一。

装包

[[email protected] ~]# rpm -ivh maxscale-2.1.2-1.rhel.7.x86_64.rpm

修改配置文件:指定数据库服务器

[[email protected] ~]# vim /etc/maxcale.cnf

9 [maxscale]

10 threads=auto 开启线程 根据cpu

18 [server1] #数据库服务器名

19 type=server

20 address=192.168.4.3 #指定ip

21 port=3306

22 protocol=MySQLBackend

23

24 [server2] #数据库服务器名

25 type=server

26 address=192.168.4.4 #指定ip

27 port=3306

28 protocol=MySQLBackend

36 [MySQL Monitor]

37 type=monitor

38 module=mysqlmon

39 servers=server1,server2 #监听两台 数据库服务器

40 user=scalemon #授权用户名

41 passwd=123456 #授权用户密码

42 monitor_interval=10000 #毫秒  每十秒监听一次

52 #[Read-Only Service] #Read-Only 全注释

53 #type=service

54 #router=readconnroute

55 #servers=server1

56 #user=myuser

57 #passwd=mypwd

58 #router_options=slave

63 [Read-Write Service]

64 type=service

65 router=readwritesplit

66 servers=server1,server2 #监听两台 数据库服务器

67 user=maxscale #授权用户名

68 passwd=123456 #授权用户密码

69 max_slave_connections=100%

75 [MaxAdmin Service] #定义软件管理服务 不用改

76 type=service

77 router=cli #使用方式  命令行

85 #[Read-Only Listener] #Read-Only 全注释

86 #type=listener

87 #service=Read-Only Service

88 #protocol=MySQLClient

89 #port=4008

91 [Read-Write Listener]

92 type=listener

93 service=Read-Write Service #服务名

94 protocol=MySQLClient

95 port=4006 #读写分离监听端口号(默认)

97 [MaxAdmin Listener] #管理服务监听

98 type=listener

99 service=MaxAdmin Service

100 protocol=maxscaled

101 socket=default

102 port=4009 #指定管理端口

根据配置文件设置,在数据库上添加相应的授权用户

scalemon 123456 监控数据库服务状态的用户(数据库服务状态和主从同步状态)

mysql> grant replication slave,replication client on *.* to [email protected]'%' identified by '123456';

mysql> grant select on mysql.* to [email protected]'%' identified by '123456';

maxscale 123456 检查客户端连接时使用的用户名和密码在监视的数据库服务器上是否存在

在代理主机测试

mysql -h192.168.4.3 -uscalemon -p123456

mysql -h192.168.4.3 -umaxscale -p123456

mysql -h192.168.4.4 -umaxscale -p123456

mysql -h192.168.4.4 -uscalemon -p123456

启动服务

[[email protected] ~]# maxscale -f /etc/maxscale.cnf

[[email protected] ~]# netstat -pantu | grep maxscale

tcp        0      0 192.168.4.5:42703       192.168.4.3:3306        ESTABLISHED 4877/maxscale

tcp        0      0 192.168.4.5:44918       192.168.4.4:3306        ESTABLISHED 4877/maxscale

tcp6       0      0 :::4009                 :::*                    LISTEN      4877/maxscale

tcp6       0      0 :::4006                 :::*                    LISTEN      4877/maxscale

二。

测试配置

在代理服务器本机访问管理服务

[[email protected] ~]# maxadmin -uadmin -pmariadb -P4009

MaxScale> list servers

Servers.

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

Server                               | Address                       | Port         | Connections     | Status

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

server1                              | 192.168.4.3                 |  3306     |           0                | Master, Running

server2                              | 192.168.4.4                 |  3306     |           0                | Slave, Running

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

在客户端 访问代理服务器 存储数据或查询数据

4-3

mysql> create database bbsdb;

Query OK, 1 row affected (0.00 sec)

mysql> create table bbsdb.t1(id int);

Query OK, 0 rows affected (0.26 sec)

MySQL [(none)]> show grants;

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

| Grants for [email protected]%                                                                           |

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

| GRANT USAGE ON *.* TO 'yaya'@'%'                                          |

| GRANT ALL PRIVILEGES ON `bbsdb`.* TO 'yaya'@'%'            |

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

2 rows in set (0.00 sec)

查看时显示为从服务

MySQL [(none)]> select @@hostname;

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

| @@hostname |

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

| 4-4mysql          |

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

1 row in set (0.00 sec)

MySQL [(none)]> insert into bbsdb.t1 values(100);

添加后切换为主服务

MySQL [(none)]> select @@hostname;

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

| @@hostname |

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

| 4-3mysql          |

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

1 row in set (0.00 sec)

原文地址:http://blog.51cto.com/13558754/2057517

时间: 2024-10-10 23:04:23

DBA成长之路---mysql主从同步,读写分离的相关文章

MySQL主从同步读写分离的集群配置

大型网站为了解决大量的高并发访问问题,除了在网站实现分布式负载均衡,远远不够.到了数据业务层.数据访问层,如果还是传统的数据结构,或者只是单单靠一台服务器支持,如此多的数据库连接操作,服务器性能再好数据库必然会崩溃.数据丢失的话,后果更是不堪设想.这时候,我们会考虑如何减少数据库的连接,一方面采用优秀的代码框架,进行代码的优化,采用优秀的数据缓存技术如:memcached等.如果资金充足的话,必然会想到假设服务器集群,来分担主数据库的压力.或者在硬件设备上,投入大量资金,购买高性能的服务器.出名

使用amoeba配置mysql主从同步读写分离

实验环境:需要三台手工编译安装的mysql,一台主,两台从主: 192.168.88.100从1: 192.168.88.103从2: 192.168.88.104前段服务器: 192.168.88.101 -----在主服务器192.168.88.100上做---------------配置NTP服务器---------- //在主服务器上搭ntp服务,提供时间同步 yum install -y ntp vi /etc/ntp.conf restrict 192.168.88.0 mask 2

mysql主从同步读写分离

https://pan.baidu.com/s/1tm_FQ4C8heQqzx01URr85A //软件连接百度网盘 三台mysql数据库:主数据库服务器:192.168.80.100 从数据库服务器1:192.168.80.101 从数据库服务器2:192.168.80.102 一台amoeba调度器:192.168.80.103 一台mariadb客户端: 192.168.80.104 注:五台虚拟机第一步都写以下两行 systemctl stop firewalld //关闭防火墙 set

mysql主从同步读写分离配置

#mysql主库配置添加: #缓存用户表及索引数据的最主要缓存空间,一般建议50%~80%,但应该以mysql服务器实际情况来定,如果跑着其他 #的应用服务或者有MyISAM表,则需要先减去系统+应用+MyISAM引擎需要的内存,再得出innodb_buffer_pool_size的 #实际值,具体情况具体分析. innodb_buffer_pool_size = 4096M #打开bin-log日志,以供slave机器读取同步日志. log-bin=/mnt/mysql/log/mysql-b

MYSQL主从同步+读写分离

环境:CentOs 6.5(最小化安装) 关闭防火墙或添加对应规则,否则slave不能连接master,会导致同步失败 Mysql1:192.168.0.231                 Mysql2:192.168.0.232                    Mysql3:192.168.0.233 在Mysql1新建同步用户和新建一个数据库yfshare,在数据库里面新建表插入数据,以作标记: mysql> select * from mytable; +------+-----

mysql 主从同步-读写分离

一.       实验环境 Master                   centos 7.3              192.168.138.13 Slave                     centos 7.3               192.168.138.14 二.在master操作 安装并配置文件 [[email protected] ~]# yum install mariadb-server -y [[email protected] ~]# cat /etc/m

搭建Mysql-proxy实现主从同步读写分离

代理服务器 Wg61 192.168.0.180 (Mysql-proxy)主服务器 Wg62 192.168.0.142 (负责写入数据)从服务器 Wg63 192.168.0.156 (负责只读数据) 实验思路: 下载Mysql-proxy,在代理服务器Wg61上安装lua语言 Wg61安装proxy,添加/etc/profile的环境变量参数 修改proxy配置文件参数,测试读写分离 搭建主从服务器,创建测试数据库表并授权用户访问权限 启动Mysql-proxy测试读写分离 测试从服务器挂

Mysql主从配置+读写分离(转)

   MySQL从5.5版本开始,通过./configure进行编译配置方式已经被取消,取而代之的是cmake工具.因此,我们首先要在系统中源码编译安装cmake工具. 注:安装前须查看是否已经安装了如下依赖包,如果没有请安装. apt-get -y install gcc g++ libncurses5-dev ncurses-devel openssl 一.主库安装及配置 1.源码安装cmake # tar xf cmake-3.0.0.tar.gz # cd cmake-3.0.0 # .

Mysql主从配置+读写分离

Mysql主从配置+读写分离     MySQL从5.5版本开始,通过./configure进行编译配置方式已经被取消,取而代之的是cmake工具.因此,我们首先要在系统中源码编译安装cmake工具. 注:安装前须查看是否已经安装了如下依赖包,如果没有请安装. apt-get -y install gcc g++ libncurses5-dev ncurses-devel openssl   一.主库安装及配置 1.源码安装cmake # tar xf cmake-3.0.0.tar.gz #