mysql搭建多主多从

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介:
原创作品,允许转载,转载时请务必以超链接形式标明文章  原始出处 、作者信息和本声明。否则将追究法律责任。 http://navyaijm.blog.51cto.com/4647068/809413

操作系统:Linux 2.6.13 (Slackware),其它版的Linux应该也差不多.
数据库:Mysql 4.1.8 源程序安装
假设服务器名:test-db1 (IP为192.168.0.1),主
假设服务器名:test-db2 (IP为192.168.0.2),主
假设服务器名:test-db3 (IP为192.168.0.3),从
二,test-db1主服务器mysql安装准备
用mysql源程序安装,假设在安装时用的configura选择项下如,解压后:
./configure
make
make imstall
chown mysql.mysql /usr/local/mysql/var
cp ../support-files/ my-medium.cnf /etc/my.cnf
cp ../support-files/mysql.server /etc/rc.d/rc.mysqld
直接启动mysql进程/etc/rc.d/rc.mysqld start
这样默认安装好之后数据库生成的目录为/usr/local/mysql/var

三,test-db2主服务器mysql安装准备
./configure
make
make imstall
chown mysql.mysql /usr/local/mysql/var
cp ../support-files/ my-medium.cnf /etc/my.cnf
cp ../support-files/mysql.server /etc/rc.d/rc.mysqld
启动mysql进程/etc/rc.d/rc.mysqld start
这样默认安装好之后数据库生成的目录为/usr/local/mysql/var
修改/etc/my.cnf文档
将port=3306改为port=3307
启动mysql进程/etc/rc.d/rc.mysqld start
至些两台主mysql服务器已经搭建好。
接下来在两台主服务器上设置replicate账号,此账号作为从服务器同步用
mysql 

 -umysql –p进入mysql
grant all on *.* to replicate@’%’ idenfied by ‘1234567890’;

四.test-db3从服务器mysql安装准备
./configure --prefix=/usr/local/mysql   --datadir=/usr/local/mysql/data1 --sysconfdir=/etc       make    make instll
备注:--prefix将MYSQL安装到/usr/local/mysql,
--datadir将数据库生成/usr/local/mysql/data1
sysconfdir是指定mysql使用到的my.cnf配置文件的搜索路径为/etc
其他mysql安装过程略.

根据Mysql管理手册中提到:每个Mysql的服务都可为独立的,所以它都调用一个my.cnf中各自不同的启动选项--就是下文中将提到的GNR值,使用不同的端口,生成各自的套接文件,服务的数据库都是独立的(更多可查阅mysql官方网站的英文管理手册).

mysqld_multi是管理多个mysqld的服务进程,这些服务进程程序不同的unix socket或是监听于不同的端口。他可以启动、停止和监控当前的服务状态。

---- 程序在my.cnf(或是在--config- file自定义的配置文件)中搜索[mysqld#]段,"#"可以是任意的正整数。这个正整数就是在下面提及的段序列,即GNR。段的序号做为 mysqld_multi的参数,来区别不同的段,这样你就可以控制特定mysqld进程的启动、停止或得到他的报告信息。这些组里的参数就像启动一个 mysqld所需要的组的参数一样。但是,如果使用多服务,必须为每个服务指定一个unix socket或端口(摘自 http://mifor.4dian.org

中的使用mysqld_multi程序管理多个MySQL 服务 )。

从上述文字可看到多Mysql服务中最重要的就是my.cnf配置文件了.
现我贴出我从服务器的my.cnf文件.-----------------------

[mysqld_multi]
mysqld = /usr/local/mysql/bin/mysqld_safe
mysqladmin = /usr/local/mysql/bin/mysqladmin
user = mysql
password = mysql
[mysqld1]
port     = 3306
socket   = /tmp/mysql.sock1
skip-locking
pid-file=/usr/local/mysql/data1/test-db1a.pid
datadir = /usr/local/mysql/data1
log=/usr/local/mysql/data1/test-db1.log
user = mysql
log-slow-queries=/usr/local/mysql/data/slowquery.log
long_query_time = 2
key_buffer = 256M
max_allowed_packet = 1M
table_cache = 512
sort_buffer_size = 2M
read_buffer_size = 2M
myisam_sort_buffer_size = 64M
thread_cache = 32
query_cache_size = 32M
thread_concurrency = 2
max_connections=500
server-id     = 2
master-host   =   192.168.0.1
master-user   =   'replcate'
master-password =   '1234567890'
master-port   = 3306
report-host = test-db3
master-connect-retry = 30
log-bin
log-slave-updates


[mysqld2]
port = 3307
socket = /tmp/mysql.sock2
pid-file = /usr/local/mysql/data2/test-db2b.pid
datadir = /usr/local/mysql/data2
log=/usr/local/mysql/data2/test-db2.log
user = mysql
log-slow-queries=/usr/local/mysql/data2/slowquery.log
long_query_time = 10
key_buffer = 128M
max_allowed_packet = 1M
table_cache = 512
sort_buffer_size = 1M
read_buffer_size = 1M
myisam_sort_buffer_size = 32M
thread_cache = 32
query_cache_size = 16M
thread_concurrency = 2
max_connections=300
server-id     = 2
master-host   =   192.168.0.2
master-user   =   'repl'
master-password =   '1234567890'
master-port   = 3307
report-host = test-db3
master-connect-retry = 30
log-bin
log-slave-updates



之后通过tar命令将主服务器上test-db1的数据库放于从服务器/usr/local/mysql/data1下
再通过tar命令将主服务器上test-db2的数据库放于从服务器/usr/local/mysql/data2下
通过以下命令启动从服务器的mysql进程
/usr/local/mysq/bin/mysqld_multi --config-file=/etc/my.cnf start 1-2                        
查看启动:

test-db3:/ # ps aux

root   10467 0.0 0.2   2712 1300 pts/0   S   18:59   0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --port=3306 --socket=/tmp/mysql.sock1
root   10475 0.0 0.2   2712 1300 pts/0   S   18:59   0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --port=3307 --socket=/tmp/mysql.sock2


然后在两台从服务器分另建立数据库以及表做测试,会看到在从服务器中分别会有相应的数据库以及表产生。大家可以通过phpMyadmin以及EMS Mysql Manager对mysql进行管理

本文出自 “屌丝运维男” 博客,请务必保留此出处http://navyaijm.blog.51cto.com/4647068/809413

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
关系型数据库 MySQL 网络安全
MySQL主从复制之多主多从部署流程—2023.04
MySQL主从复制之多主多从部署流程—2023.04
313 0
|
消息中间件 数据采集 监控
ELK搭建(四):监控mysql慢查询、错误日志日志
因为mysql免费、稳定以及还不错的性能,是当前市面上多数公司的数据库选择。在实际的生产环境中我们更需要及时知道数据库中的报错日志、慢日志等信息,来帮助我们进行排错和优化。 普通的到服务器上去查看日志的方式并不方便,特别是涉及到分布式部署时,因此我们需要一个统一的监控平台来实时、方便的查看这些日志数据。
975 0
ELK搭建(四):监控mysql慢查询、错误日志日志
|
canal 存储 NoSQL
mysql进阶:canal搭建主从|集群架构
之前我们讲解过canal的各种应用,但是对于生产环境来讲,服务高可用是必须保证的。因此canal单节点是不能满足我们的需求的。就需要搭建canal集群。
904 2
mysql进阶:canal搭建主从|集群架构
|
SQL 关系型数据库 分布式数据库
PolarDB for MySQL 多主集群体验
本实验带您体验PolarDB for MySQL多主集群跨机行级并发读写能力和跨机写性能的横向扩展。
170 0
|
存储 Cloud Native 关系型数据库
对话 | PolarDB for MySQL 云原生多主架构解读
PolarDB for MySQL多主架构集群版的发布,实现了集群架构从一写多读到多写多读升级,以及写性能的横向扩展,让用户购买的资源得到了最大化的利用。
对话 | PolarDB for MySQL 云原生多主架构解读
|
关系型数据库 MySQL Shell
MySQL笔记 | 2.Docker下搭建MySQL&查看BinLog文件
这篇文章主要是在Docker下搭建一个MySQL环节,为了后续的数据库学习做准备。
|
SQL 机器学习/深度学习 分布式计算
CDH 搭建_ Hadoop _ MySQL|学习笔记
快速学习 CDH 搭建_ Hadoop _ MySQL
137 0
CDH 搭建_ Hadoop _ MySQL|学习笔记
|
SQL 存储 消息中间件
ELK搭建(六):搭建mysql性能、执行效率监控平台
mysql作为市场的主流数据库,承载了大部分公司的核心业务数据,同时也是大多数业务的底层存储。 针对mysql运行情况的监控必不可少,之前我们讲解了如何搭建mysql慢日志、错误日志的监控平台。 那么本期,我们针对mysql集群、性能、各类sql语句执行情况、服务状态等指标来搭建一个可视化的监控平台,方便我们实时了解mysql资源利用率、sql执行效率、访问压力等等。
430 0
ELK搭建(六):搭建mysql性能、执行效率监控平台
|
安全 关系型数据库 MySQL
【Docker 基础教程】Mysql主从服务搭建------Mysql容器闪退及容器名冲突系列问题
【Docker 基础教程】Mysql主从服务搭建------Mysql容器闪退及容器名冲突系列问题
254 0
【Docker 基础教程】Mysql主从服务搭建------Mysql容器闪退及容器名冲突系列问题
|
关系型数据库 MySQL

推荐镜像

更多