mysql搭建多主多从
操作系统: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
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进阶:canal搭建主从|集群架构 之前我们讲解过canal的各种应用,但是对于生产环境来讲,服务高可用是必须保证的。因此canal单节点是不能满足我们的需求的。就需要搭建canal集群。
ELK搭建(六):搭建mysql性能、执行效率监控平台 mysql作为市场的主流数据库,承载了大部分公司的核心业务数据,同时也是大多数业务的底层存储。 针对mysql运行情况的监控必不可少,之前我们讲解了如何搭建mysql慢日志、错误日志的监控平台。 那么本期,我们针对mysql集群、性能、各类sql语句执行情况、服务状态等指标来搭建一个可视化的监控平台,方便我们实时了解mysql资源利用率、sql执行效率、访问压力等等。
ELK搭建(四):监控mysql慢查询、错误日志日志 因为mysql免费、稳定以及还不错的性能,是当前市面上多数公司的数据库选择。在实际的生产环境中我们更需要及时知道数据库中的报错日志、慢日志等信息,来帮助我们进行排错和优化。 普通的到服务器上去查看日志的方式并不方便,特别是涉及到分布式部署时,因此我们需要一个统一的监控平台来实时、方便的查看这些日志数据。
相关文章
- 基于HTML,css,jQuery,JavaScript,MySQL搭建博客系统
- LAMP+redis搭建discuz论坛,基于mysql-proxy插件主从同步
- spring boot单元测试之九:用@MybatisTest注解基于mysql+mybatis测试mapper/sql(spring boot 2.4.4)
- mysql cluster搭建
- 【原创】MySQL Proxy - read_auth_result()
- 【Data Cluster】真机环境下MySQL数据库集群搭建
- MySQL MHA高可用环境搭建
- linux下mysql下载安装
- MySQL 开启远程登录权限
- Win10_MySQL环境搭建以及Navicat的使用全解
- Ubuntu下(Linux+Apache+MYSQL+PHP, LAMP)环境搭建
- mysql函数——筑梦之路
- macOS 安装 mysql,忘记mysql密码 重新修改
- MySQL锁详细讲解
- Mysql搭建备库
- Mysql中新建用户,设置密码
- 【超详细】阿里/华为云服务器部署环境快速搭建一条龙【git、maven、jdk8、docker安装nginx、mysql、redis】
- 【MySql】MySQL索引15连问(相信大家看完肯定会有帮助)
- C++搭建集群聊天室(七):MySQL数据库配置 及项目工程目录配置
- Docker下登入mysql并创建用户账户密码