MySQL 基本主从复制

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

+  MySQL主从复制 +

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

主从复制基本原理:

通过Mysql的某一台主机的数据复制到其他主机。复制过程一个服务器充当主服务器,其余为从服务器。主服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环。日志记录发送到从服务器的更新。

注意:对表的更新必须在主服务器上。

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

master IP :172.25.38.3

slave IP :172.25.38.4

rhel-server-6.5-x86_64

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

准备操作

rpm -e `rpm -qa|grep mysql    ##删除一切之前安装的数据库

yum install -y mysql-server    ##安装数据库

rpm -qa |grep mysql        ##安装后,查看已安装的数据库安装包

mysql-5.1.71-1.el6.x86_64

mysql-server-5.1.71-1.el6.x86_64

mysql-libs-5.1.71-1.el6.x86_64

cd /var/lib/mysql          ##进入该目录,删除一切数据

rm -fr *

----------------------------------

主master

vim /etc/my.cnf

[mysqld]

datadir=/var/lib/mysql         ##数据库的数据路径

socket=/var/lib/mysql/mysql.sock    ##数据库启动的脚本

user=mysql

symbolic-links=0

server-id=3                    ##最好写成ip的最后一段

log-bin=mysql-bin

binlog-do-db=test

binlog-ignore-db=mysql

[mysqld_safe]

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid

/etc/init.d/mysqld start                 ##开启数据库

/usr/bin/mysqladmin -uroot -p password ‘westos‘    #设置新密码

--------------------------------

从slave

vim /etc/my.cnf

[mysqld]

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

user=mysql

server-id=4

log-bin=mysql-bin

[mysqld_safe]

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid

/etc/init.d/mysqld start

/usr/bin/mysqladmin -uroot -p password ‘westos‘

--------------------------------

主和从重启服务

/etc/init.d/mysqld restart##更改配置后,需要重启数据库

--------------------------------

主master授权

mysql -uroot -pwestos

mysql> grant replication slave on *.* to [email protected]‘172.25.38.%‘ identified by ‘westos‘;##授权,给用户ly,ip为172.25.38网段下的所有ip,密码为westos

Query OK, 0 rows affected (0.00 sec)

mysql> show master status;##主master信息

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

| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |

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

| mysql-bin.000004 |      254 | test         | mysql            |

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

1 row in set (0.00 sec)

------------------------------

从slave

mysql> change master to master_host=‘172.25.38.3‘, master_user=‘ly‘,master_password=‘westos‘;## 主ip设置为172.25.38.3,用户名为ly,密码为westos

Query OK, 0 rows affected (0.59 sec)

mysql> start slave;##启动slave

Query OK, 0 rows affected (0.00 sec)

mysql> show slave status\G;##查看slave状态信息

*************************** 1. row ***************************

Slave_IO_State: Waiting for master to send event

Master_Host: 172.25.38.3

Master_User: ly

Master_Port: 3306

Connect_Retry: 60

Master_Log_File: mysql-bin.000004

Read_Master_Log_Pos: 254

Relay_Log_File: mysqld-relay-bin.000005

Relay_Log_Pos: 399

Relay_Master_Log_File: mysql-bin.000004

Slave_IO_Running: Yes  ##必须为yes

Slave_SQL_Running: Yes  ##必须为yes

-------------------------------------

主master测试

mysql> show databases;##显示当前所有数据库

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

| Database           |

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

| information_schema |

| mysql              |

| test               |

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

3 rows in set (0.00 sec)

mysql> use test;##进入test

Database changed

mysql> create table usertb (id int(8) not null,name varchar(15) not null);

Query OK, 0 rows affected (0.14 sec)##创建名为usertb的表

mysql> insert into usertb values(01,‘liu‘);##插入信息

Query OK, 1 row affected (0.00 sec)

mysql> insert into usertb values(02,‘li‘);

Query OK, 1 row affected (0.00 sec)

mysql> select * from usertb;##查看表中的所有信息

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

| id | name |

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

|  1 | liu  |

|  2 | li   |

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

2 rows in set (0.00 sec)

------------------------------

从slave查看数据库信息如下

mysql> show databases;

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

| Database           |

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

| information_schema |

| mysql              |

| test               |

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

3 rows in set (0.00 sec)

mysql> use test;

Reading table information for completion of table and column names

You can turn off this feature to get a quicker startup with -A

Database changed

mysql> show tables;

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

| Tables_in_test |

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

| usertb         |

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

1 row in set (0.00 sec)

mysql> select * from usertb;

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

| id | name |

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

|  1 | liu  |

|  2 | li   |

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

2 rows in set (0.00 sec)

-----------------------------------

时间: 2024-10-05 11:46:29

MySQL 基本主从复制的相关文章

mysql实现主从复制

今天说一下MySQL的主从复制如何做到! 准备工作: 1.两个虚拟机:我这里用的是CentOS5.5,IP地址分别是192.168.1.101 和192.168.1.105: 101做主服务器,105做从服务器(都已经安装相同版本的Mysql): 2.本机环境:Apache+PHP+MySQL 好了,现在开始吧,来看看这听起来高大上的主从复制是怎么回事. 原理:mysql要做到主从复制,其实依靠的是二进制日志,即:假设主服务器叫A,从服务器叫B:主从复制就是   B跟着A学,A做什么,B就做什么

怎样解决MySQL数据库主从复制延迟的问题?

1.网络超时 2.慢查询 3.流量 问题一:主库的从库太多,导致复制延迟从库数据以3-5个为宜,要复制的从节点数量过多,会导致复制延迟问题二:从库硬件比主库差,导致复制延迟查看Master和Slave的系统配置,可能会因为机器配置不当,包括磁盘I/O.CPU.内存等各方面因素造成复制的延迟.一般发生在高并发大数据量写入场景中问题三:慢SQL语句过多假如一条SQL语句执行时间是20秒,那么从执行完毕到从库上能查到数据至少需要20秒,这样就延迟20秒了.一般要把SQL语句的优化作为常规工作不断地进行

用python监控mysql的主从复制

利用python来检查MySQL的主从复制, 有一个注意点是,cur.execute("show slave status;") 不能用cur.execute("show slave status\G;") result = cur.fetchall() 返回的是个二元数组 result[0] 返回时整个show slave status 状态信息. result[0][n] 返回具体的某一项. python代码如下: #!/usr/bin/env python #

MySQL的主从复制是如何实现的

前言 MySQL的主从复制是MySQL本身自带的一个功能,不需要额外的第三方软件就可以实现,其复制功能并不是copy文件来实现的,而是借助binlog日志文件里面的SQL命令实现的主从复制,可以理解为我再Master端执行了一条SQL命令,那么在Salve端同样会执行一遍,从而达到主从复制的效果. MySQL主从复制架构图 一主一从 master-slave-replication-01 一主多从 master-slave-replication-02 级联 master-slave-repli

Mysql中主从复制的原理、配置过程以及实际案例

Mysql中主从复制的原理.配置过程以及实际案例1.什么是主从复制?原理:主从分离,什么意思呢?我们不妨画个图看看.如图1所示: 2.准备工作:预备两台服务器,我这里使用虚拟机安装了两个Centos6.7_64位操作系统,并分别在两台服务器上安装mysql.我的IP地址分别为:192.168.1.15/192.168.1.16,这里我定义15为主服务器,16为从服务器.首先,我们编辑主服务器中mysql配置文件.(因我的mysql使用非root用户安装,因此配置文件放在/home/formal/

基于Mysql-Proxy实现Mysql的主从复制以及读写分离(上)

基于Mysql-Proxy实现Mysql的主从复制以及读写分离(上) 上周BOSS给分配任务让实现一下Mysql数据库的主从复制以及读写分离,然后花了一盏茶的功夫进行了调研,发现主从复制数据库进行一番配置直接可以实现,而读写分离则需要一些软件的支持,基本上读写分离的实现有两种: Amoeba(变形虫):是由前阿里员工实现的一个以MySQL为底层数据存储,并对应用提供MySQL协议接口的proxy.但是由于没人维护了,而且据说作者也不再回答开发者的问题,所以不予考虑. Mysql-Proxy:是一

MySQL DB 主从复制之SSL

需求架构 准备工作 主从服务器时间同步 # 主从服务器同时配置crontab任务,与NTP服务器同步时间即可 */5 * * * * ntpdate 172.16.0.1 &>/dev/null 部署配置 主库配置 vi /etc/my.cnf server-id = 1 # 在复制架构中,需保持全局唯一 log-bin = mysql-bin # 默认在数据目录下 sync_binlog = 1 # 设置mariadb每次在提交事务前会将二进制日志同步到磁盘,保证服务器崩溃时不会丢失事件

基于SSL的mysql(MariaDB)主从复制

一.前言 备份数据库是生产环境中的首要任务,重中之重,有时候不得不通过网络进行数据库的复制,这样就需要保证数据在网络传输过程中的安全性,因此使用基于SSL的复制会大加强数据的安全性 二.准备工作 1.主从服务器时间同步 [[email protected] ~]# crontab -e */30 * * * * /usr/sbin/ntpdate 172.16.0.1 &>/dev/null 2.mysql说明 (1)主服务器 hostname:master    IP:172.16.7.2

mysql的主从复制(二)mysql-proxy实现读写分离

安装前准备(三台虚拟机): 主机1: 172.16.24.77   安装msyql服务器端  mysql-proxy 主机2: 172.16.24.88    安装mysql服务器端(mysql主) 主机3: 172.16.24.99   安装mysql服务器端(mysql从) (注,我这里的三台主机都是安装好了mysql的,如里你没有安装请参照前面的博客有安装过程) 一.安装mysql-proxy 所需安装包(mysql-proxy-0.8.3-linux-glibc2.3-x86-64bit

mysql半主从复制

node3: 172.16.92.3/16 mariadb主服务器node4: 172.16.92.4/16 mariadb从服务器以上节点均为CentOS 7.1 配置环境1. 配置好光盘yum源2. 关闭selinux和iptables node3: mariadb主服务器 [[email protected] ~]# yum -y install mariadb-server[[email protected] ~]# vim /etc/my.cnf[mysqld]datadir=/var