1.配置MASTER
修改主数据库/etc/my.cnf,注意位置,在mysqld下面,不要添加到safe下面
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
old_passwords=1
max_connections=10000
join_buffer_size = 64M
read_buffer_size = 128M
key_buffer = 512M
open-files-limit = 28196
query_cache_type=2
query_cache_size = 32M
tmp_table_size = 1024M
long_query_time=2
log-slow-queries = /var/log/mysql/slowquery.log
#以下开始是主从配置
server-id=1 #主库一般是1,从库写别的,不重复就行
log-bin=my_binglog #开启日志记录,这样就可以支持主从了
log_bin=/var/log/mysql/mysql-bin.log
expire_logs_days=10
max_binlog_size=100M
binlog_do_db=shop #需要被分发的主数据库名
binlog_ignore_db=test #不需要被分发的主数据库名
#主从配置结束
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
binlog_do_db为需要复制的db。 binlog_ignore_db为忽略复制的db。需要增加DB的话,就增加相应的一行。
2.重启master数据库,运行检查
mysql> show master status; #检查是否以master形式启动了。
注意记录下以下内容:
master_log_file主库当前的日志文件
master_log_pos主库的日志文件偏移量
mysql> show variables like "%log%";
#需要看到这样的一行,说明binlog已经开启了: log_bin | ON
3.在master上为slave建立用户
mysql> grant replication slave, reload, super on *.* to 'slave'@'%' identified by '123456';
这样,主机配置完毕。
4.将主服务器数据 copy 过来
master用mysqldump导出
slave建好同名数据库,导入
5.配置slave,编辑从库的/etc/my.cnf
server-id=2 #唯一
#设置要进行或不要进行主从复制的数据库名,同时也要在Master 上设定。
replicate-do-db=shop
然后登录从库,执行从库配置命令
CHANGE master TO master_host='192.168.1.109', master_port=3306, master_user='slave', master_password='123456', master_log_file='my_binglog.000001', master_log_pos=107;
master_host主库的ip
master_post主库的端口
master_user登录主库的用户名
master_password不解释
master_log_file主库当前的日志文件
master_log_pos主库的日志文件偏移量
此处的master_log_file和master_log_pos需要从主库上核对,用show master status核对。
6.启动slave, 检查salve状态
slave:mysql> slave sart;
slave:mysql> show slave status;
#很多很多列,会显示slave的状态
7.完毕,在主数据库进行增删修改,看从数据库是否有更新。
从以上内容可以得之,主从实际是基于bin-log的sql
start slave后,从库会从主库获取position中偏移量之后的sql,然后到从库上执行。
所以只要从库导入了主库的sql,并且记住导出时候的偏移量,数据就能同步了。
为了防止在导出数据库的过程中,数据库还有写入操作,导致偏移量计算不准确,可以使用按照以下步奏处理。锁定表-导出-解锁
mysql> FLUSH TABLES WITH READ LOCK;
获取偏移位置
导出数据
mysql> UNLOCK TABLES;
简单总结如下:
//清空表缓存并且锁住表
mysql>flush tables with read lock;
//查看binlog并记录下来
mysql>show master status\G;
file+position就是slave复制的起点
//备份数据库
$mysqldump --all-databases --host=master>backup.sql
//解除数据库锁定
mysql>unlock tables;
//slave恢复备份
mysql --host=slave < backup.sql
//启动slave
mysql>change master to master_host='master',master_port=3306,master_user='***',master_password='***',master_log_file='file',master_log_pos='position'
mysql>start slave;
源自:http://www.luochunhui.com/id/550
http://www.d5s.cn/archives/95
http://dev.mysql.com/doc/refman/5.1/zh/replication.html
分享到:
相关推荐
综上所述,MySQL主从配置的原理是通过二进制日志的记录和复制过程,实现数据在主从服务器之间的同步。配置MySQL主从复制可以带来许多好处,如分散查询负载、提升查询效率、数据备份和读写分离等,但同时也需要注意...
### MySQL主从配置知识点详解 #### 一、主服务器配置 **1.1 创建复制用户** - **目的**: 为了确保从服务器能够连接到主服务器并获取数据更新。 - **命令**: ```sql mysql> GRANT REPLICATION SLAVE ON *.* TO '...
MySQL主从配置是一种数据库复制技术,它允许一个MySQL服务器(主服务器)的数据更新同步到其他一个或多个服务器(从服务器)上。这种配置在大型应用、分布式系统和高可用性环境中非常常见,因为它提供了数据备份、...
MySQL主从配置是数据库高可用性和负载均衡的一种常见策略,尤其在Windows环境下,为了实现读写分离、主从复制和一主多从架构,可以极大地提高数据库系统的性能和稳定性。结合Spring框架,我们可以轻松地在应用程序中...
### MySQL主从配置操作详解 #### 一、MySQL服务器复制配置背景 MySQL的主从复制是一种常见的高可用性和数据冗余解决方案。通过设置一个主服务器(Master)和一个或多个从服务器(Slave),可以实现数据的实时同步...
#### 一、为什么使用MySQL主从配置? 在现代数据库系统中,随着业务规模的不断扩大和用户数量的激增,单一数据库服务器往往难以满足高性能和高可用性的需求。为了提高系统的整体性能和可靠性,采用MySQL主从配置...
"mysql热备及mysql主从配置"是实现这一目标的关键技术。热备是指在不影响主数据库正常服务的情况下,实时同步主数据库的数据到备用数据库,以确保在主库出现问题时能够快速切换到备库,减少业务中断时间。而MySQL...
MySQL主从配置的优点主要有两方面: 1. 负载均衡:通过将查询操作分散到多个从服务器上,减轻了主服务器的压力,提高了系统的查询效率。 2. 数据冗余与故障恢复:从服务器可以作为主服务器的备份,一旦主服务器出现...
### MySQL主从配置详解 #### 一、MySQL主从配置概述 MySQL的主从复制机制是一种数据同步方式,主要用于实现数据库的数据备份与高可用性。通过设置一个或多个从服务器来复制主服务器上的数据更新操作,可以有效分散...
MySQL主从配置是一种常见的数据库高可用性和负载均衡策略,它主要目标是实现读写分离,提升数据库系统的并发处理能力。在大数据量或者复杂的报表查询场景下,某些SQL语句可能会导致长时间锁定表,从而影响到前端应用...
### MySQL 主从库配置详解 #### 一、MySQL 安装与环境变量设置 在进行 MySQL 主从库配置之前,我们需要确保已经正确安装了 MySQL,并设置了相应的环境变量。以下是具体的步骤: 1. **下载 MySQL 免安装版**: - ...
### 二、MySQL主从配置 #### 1. 配置主服务器 在主服务器上编辑MySQL配置文件`/etc/my.cnf`,添加主服务器配置: ```ini [mysqld] server-id=1 log-bin=mysql-bin binlog-do-db=test ``` #### 2. 启动主服务器 ```...
Mysql主从配置文件,主文件my.cnf,从文件my.cnf完整版。部分配置如下: [client] port = 3306 socket =/tmp/mysql.sock [mysql] no-auto-rehash prompt="\u@\h [\d]>" #pager="less -i -n -S" #tee=/opt/mysql/...
"tp3.2部署mysql主从配置"的主题涉及了Laravel框架的一个旧版本(ThinkPHP 3.2)与MySQL数据库的主从设置。以下是对这个主题的详细解释: 首先,ThinkPHP 3.2是一个基于MVC设计模式的PHP开发框架,它简化了Web应用...