从源码开始搭建MySQL主从服务器[简约篇]

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介:
本来计划把《 How to Set Up Replication》完整的译一下,不过后来仔细想想翻译文档工作工作量大不说,况且兴许已经有人早做过了,就省了这卖力不讨好的事。
 
简单把从源码开始搭建MySQL主从服务器的步骤记下来。大家就当作是操作文档好了。如有谬误还请指正啊。
 
测试环境:
Redhat 5u3
MySQL 5.1.33
主数据库服务器IP:192.168.254.2
从数据库服务器IP:192.168.254.3
 
一、分别在主从数据库上编译MySQL-server并安装
我使用的是mysql-5.1.33.tg.gz
下面是我的编译参数。
 ./configure --prefix=/usr/local/mysql-5.1.33 --without-comment --without-debug --with-ssl --with-charset=gbk --with-extra-charsets=gb2312,utf8 --enable-thread-safe-client --enable-local-infile --enable-assembler --with-big-tables --with-plugins=innobase
# make
# make install


# ln -s /usr/local/mysql-5.1.33 /usr/local/mysql
保持编译默认配置,启动数据库,为了方便起见可以把mysql的目录写到PATH变量中.
# export PATH=$PATH:/usr/local/mysql/bin
关于更详细的安装过程请参照:
 
 
 
 
这里就不来再赘述了。

二、修改主数据库的配置文件
更权威的信息请访问: http://dev.mysql.com/doc/refman/5.1/en/replication-howto.html
[主服务器]
eth1:192.168.254.2
参照 http://dev.mysql.com/doc/refman/5.1/en/replication-howto-masterbaseconfig.html,binlog_format=mixed参数不是必须的,可以注
释掉。
# vim /etc/my.cnf
[mysqld]
# Replication Master Server (default)
# binary logging is required for replication
log-bin=mysql-bin
# binary logging format - mixed recommended
binlog_format=mixed
# required unique id between 1 and 2^32 - 1
# defaults to 1 if master-host is not set
# but will not function as a master if omitted
server-id       = 1
 
三、启动主数据库并,生成主从复制用的账户

# service mysqld start
在主数据库服务器上,进入mysql下,配置专用的二进制日志传输用户.
也可参照 http://dev.mysql.com/doc/refman/5.1/en/replication-howto-repuser.html只使用replication slave权限即可。
mysql> grant replication slave,reload,super on *.* to  slave@192.168.254.3 identified by 'slavepass';
mysql> flush privileges;
mysql> exit;
请在从数据库服务器上测试这个账户:
# mysql -u slave -h 192.168.254.2 -pslavepass
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.1.33-log Source distribution
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>
 
四、给主数据库建立一个完整的快照
 
上面是测试成功的情况。可以通过show privileges;来查看一下这个账户都有什么权限。
在shell下使用mysqldump 来备份一次主数据库:
# mysqldump --all-database --lock-all-tables > dbbackup_`date +%F'-'%T`.dump

请特别注意在此期间最好没有任何写入操作。可以在mysql下锁定数据库的写:
mysql> FLUSH TABLES WITH READ LOCK;
并记下二进制日志的偏移量:
注意如果在my.cnf中包含了主服务器的信息,这一步就不是必须。
mysql> show master status;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000004 |      332 |              |                  |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
 
在第六步中,在成功把这个快照导入到从数据库后便可以打开数据库的锁:
mysql> UNLOCK TABLES;
 
然后直接复制到从服务器上:
我在这里使用scp命令。
# scp dbbackup*.dump  root@192.168.254.3:/root/ 
输入从服务器的密码。
 
五、修改从服务器的my.cnf

[从服务器]
eth1:192.168.254.3
# vim /etc/my.cnf
[mysqld]
# required unique id between 2 and 2^32 - 1
# (and different from the master)
# defaults to 2 if master-host is set
# but will not function as a slave if omitted
server-id       = 2
#
# 下面都是主服务器的信息,实际我们也可以在服务器启动后,实时地通过mysql命令来修改它们,都不是必须的。
# The replication master for this slave - required
master-host     =   192.168.254.2
#
# The username the slave will use for authentication when connecting
# to the master - required
master-user     =   slave
#
# The password the slave will authenticate with when connecting to
# the master - required
master-password =   slavepass
#
# The port the master is listening on.
# optional - defaults to 3306
#master-port     =  3306
#
# binary logging - not required for slaves, but recommended
#log-bin=mysql-bin
 
六、启动从服务器,并导入传输过来的,主数据库快照
# service mysqld start
# mysql < dbbackup*.sql
 
现在在另一个窗口中打开从数据库的锁:
mysql> UNLOCK TABLES;
同步数据:
如果在第五步中编译my.cnf的时候没有包含主服务器的信息,我们也可以在mysql命令下实时修改。
mysql> CHANGE MASTER TO MASTER_HOST='ServerIP/FQDN', MASTER_USER='ReplClient', MASTER_PASSWORD='ClientPassword',
MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=98;

例如我是直接执行:
mysql> CHANGE MASTER TO MASTER_HOST='192.168.254.2', MASTER_USER='slave',
MASTER_PASSWORD='slavepass',MASTER_LOG_FILE='mysql-bin.000004',MASTER_LOG_POS=332;
Query OK, 0 rows affected (0.02 sec)

启动同步
mysql> start slave;
 
七、其它的一些主从数据库的管理操作

查看状态
主:
mysql> show master status;
从:
mysql> show slave status;
 
启动和停止同步
启动:
mysql> start slave;
停止:
mysql> stop slave;
 
其它信息我会随时补充的。




     本文转自xiaoyuwang 51CTO博客,原文链接:http://blog.51cto.com/wangxiaoyu/216685,如需转载请自行联系原作者

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
12天前
|
关系型数据库 MySQL PHP
源码编译安装LAMP(HTTP服务,MYSQL ,PHP,以及bbs论坛)
通过以上步骤,你可以成功地在一台Linux服务器上从源码编译并安装LAMP环境,并配置一个BBS论坛(Discuz!)。这些步骤涵盖了从安装依赖、下载源代码、配置编译到安装完成的所有细节。每个命令的解释确保了过程的透明度,使即使是非专业人士也能够理解整个流程。
42 18
|
4天前
|
安全 关系型数据库 MySQL
【YashanDB知识库】YMP从mysql迁移到崖山,报错:服务器错误
【YashanDB知识库】YMP从mysql迁移到崖山,报错:服务器错误
|
3天前
|
安全 关系型数据库 MySQL
【YashanDB知识库】YMP从mysql迁移到崖山,报错:服务器错误
【YashanDB知识库】YMP从mysql迁移到崖山,报错:服务器错误
【YashanDB知识库】YMP从mysql迁移到崖山,报错:服务器错误
|
1月前
|
存储 SQL 关系型数据库
服务器数据恢复—云服务器上mysql数据库数据恢复案例
某ECS网站服务器,linux操作系统+mysql数据库。mysql数据库采用innodb作为默认存储引擎。 在执行数据库版本更新测试时,操作人员误误将在本来应该在测试库执行的sql脚本在生产库上执行,导致生产库上部分表被truncate,还有部分表中少量数据被delete。
77 25
|
2月前
|
监控 前端开发 应用服务中间件
小游戏源码开发搭建技术栈和服务器配置流程
近些年不同场景游戏层出不穷,现就小游戏开发技术应用及功能详细剖析!
|
1月前
|
监控 关系型数据库 MySQL
如何解决 MySQL 数据库服务器 CPU 飙升的情况
大家好,我是 V 哥。当 MySQL 数据库服务器 CPU 飙升时,如何快速定位和解决问题至关重要。本文整理了一套实用的排查和优化套路,包括使用系统监控工具、分析慢查询日志、优化 SQL 查询、调整 MySQL 配置参数、优化数据库架构及检查硬件资源等步骤。通过一个电商业务系统的案例,详细展示了从问题发现到解决的全过程,帮助你有效降低 CPU 使用率,提升系统性能。关注 V 哥,掌握更多技术干货。
154 0
|
3月前
|
SQL 存储 关系型数据库
MySQL/SqlServer跨服务器增删改查(CRUD)的一种方法
通过上述方法,MySQL和SQL Server均能够实现跨服务器的增删改查操作。MySQL通过联邦存储引擎提供了直接的跨服务器表访问,而SQL Server通过链接服务器和分布式查询实现了灵活的跨服务器数据操作。这些技术为分布式数据库管理提供了强大的支持,能够满足复杂的数据操作需求。
159 12
|
3月前
|
JavaScript 安全 Java
java版药品不良反应智能监测系统源码,采用SpringBoot、Vue、MySQL技术开发
基于B/S架构,采用Java、SpringBoot、Vue、MySQL等技术自主研发的ADR智能监测系统,适用于三甲医院,支持二次开发。该系统能自动监测全院患者药物不良反应,通过移动端和PC端实时反馈,提升用药安全。系统涵盖规则管理、监测报告、系统管理三大模块,确保精准、高效地处理ADR事件。
212 1
|
4月前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。通过具体案例,读者可以了解如何准备环境、下载源码、编译安装、配置服务及登录 MySQL。编译源码安装虽然复杂,但提供了更高的定制性和灵活性,适用于需要高度定制的场景。
266 3
|
4月前
|
PHP 数据库 数据安全/隐私保护
布谷直播源码部署服务器关于数据库配置的详细说明
布谷直播系统源码搭建部署时数据库配置明细!

热门文章

最新文章