MySql主从复制实验

实验环境准备:

IP 主机名 角色
133.72.24.201 hadoop001 master
133.72.24.202 hadoop002 slave
Mysql数据库软件版本 MySQL-server-5.6.23-1.el6.x86_64
操作系统 CentOS release 6.4 (Final)
内核版本 2.6.32-358.el6.x86_64

1、卸载原有 系统的mysql组件

[[email protected] Downloads]# rpm -qa | grep -i mysql

mysql-libs-5.1.66-2.el6_3.x86_64

[[email protected] Downloads]# rpm -e mysql-libs-5.1.66-2.el6_3.x86_64 --nodeps

2、安装mysql

[[email protected] Downloads]# rpm -ivh MySQL-server-5.6.23-1.el6.x86_64

A RANDOM PASSWORD HAS BEEN SET FOR THE MySQL root USER !

You will find that password in ‘/root/.mysql_secret‘.

You must change that password on your first connect,

no other statement but ‘SET PASSWORD‘ will be accepted.

[[email protected] Downloads]# rpm -ivh MySQL-client-5.6.23-1.el6.x86_64.rpm

Preparing...                ########################################### [100%]

1:MySQL-client           ########################################### [100%]

3、修改配置文件启动mysql服务!

[[email protected] Downloads]# echo ‘explicit_defaults_for_timestamp=true‘ >> /usr/my.cnf

[[email protected] Downloads]# service mysql start

Starting MySQL... SUCCESS!

4、登录mysql数据库并修改密码

[[email protected] Downloads]# cat /root/.mysql_secret

# The random password set for the root user at Thu Mar  5 23:07:44 2015 (local time): 60MhiIwDfYxoNOEA

[[email protected] Downloads]# mysql -u root -p60MhiIwDfYxoNOEA

修改密码:

mysql> SET PASSWORD FOR ‘root‘@‘localhost‘ = PASSWORD(‘mysql123‘);

Query OK, 0 rows affected (0.00 sec)

mysql> SET PASSWORD FOR ‘root‘@‘::1‘ = PASSWORD(‘mysql123‘);

Query OK, 0 rows affected (0.00 sec)

mysql> SET PASSWORD FOR ‘root‘@‘127.0.0.1‘ = PASSWORD(‘mysql123‘);

Query OK, 0 rows affected (0.00 sec)

mysql> SET PASSWORD FOR ‘root‘@‘hadoop001‘ = PASSWORD(‘mysql123‘);

Query OK, 0 rows affected (0.00 sec)

mysql> GRANT ALL PRIVILEGES ON *.* TO ‘root‘@‘%‘ IDENTIFIED BY ‘mysql123‘WITH GRANT OPTION;

Query OK, 0 rows affected (0.00 sec)

mysql> flush PRIVILEGES;

Query OK, 0 rows affected (0.00 sec)


5、master设置

5.1、停止mysql服务

service mysql stop

5.2、vi /usr/my.cnf

 1     # log_bin,必须开启bin日志.
 2     log_bin=master-bin.log
 3     # server_id = .....必须设置server_id,保证集群内的唯一性.可以用ip地址最后3位
 4     server_id=201
 5     log-slave-updates
 6     #所有事务提交必须写入硬盘
 7     innodb_flush_log_at_trx_commit=1
 8     #必须同步bin日志
 9     sync_binlog=1
10     binlog_format=mixed
11     max_connections=1000
12     relay-log=master-relay-bin
13     master-info-repository=table
14     relay-log-info-repository=table
15     relay-log-recovery=1

6、slave设置

6.1、停止mysql服务

service mysql stop

6.2、vi /usr/my.cnf

 1 # log_bin,slave节点也需要开启bin日志
 2 log_bin=slave-bin.log
 3 # server_id = .....必须设置server_id,保证集群内的唯一性.可以用ip地址最后3位
 4 server_id=202
 5 #保证slave节点也能同步刷新master发送bin日志.
 6 log-slave-updates
 7 binlog_format=mixed
 8 max_connections=1000
 9 relay-log=slave-relay-bin
10 master-info-repository=table
11 relay-log-info-repository=table
12 relay-log-recovery=1

7、master节点创建复制权限用户

mysql>GRANT REPLICATION SLAVE,reload,super ON *.* TO [email protected] IDENTIFIED BY ‘repl_password‘;

mysql>flush PRIVILEGES;

8、全库备份

8.1、master节点执行全量备份

8.1.1、先设置全局表锁

mysql>FLUSH TABLES WITH READ LOCK;

8.1.2、记录当前日志与位置

mysql> show master status;

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

| File              | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

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

| master-bin.000001 |      425 |              |                  |                   |

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

1 row in set (0.00 sec)

8.1.3、执行备份命令

[[email protected] ~]# mysqldump -uroot -pmysql123 test > test.sql

8.1.4、执行命令释放锁

mysql>UNLOCK TABLES;

##退出mysqlclient端之后才能真正释放锁

mysql>exit

8.1.5、把备份脚本传递到slave节点

[[email protected] ~]#scp test.sql [email protected]:/root/test.sql

8.2、slave节点执行恢复全库

[[email protected] ~]#mysql -uroot -pmysql123 -D test < /root/test.sql

8.3、slave节点创建replication连接

mysql>CHANGE MASTER TO MASTER_HOST=‘133.72.24.201‘,MASTER_USER=‘repl_user‘,MASTER_PASSWORD=‘repl_password‘,MASTER_LOG_FILE=‘master-bin.000001‘,MASTER_LOG_POS= 425;

mysql>start slave;

9、检测replication状态

9.1、master节点检测从节点

mysql> show slave hosts;

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

| Server_id | Host | Port | Master_id | Slave_UUID                           |

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

|       202 |      | 3306 |       201 | aa5ba5ed-c5ff-11e4-934f-000c29dbb4c6 |

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

1 row in set (0.00 sec)

9.2、slave节点检测replication状态

mysql> show slave status\G

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

Slave_IO_State: Waiting for master to send event

Master_Host: 133.72.24.201

Master_User: repl_user

Master_Port: 3306

Connect_Retry: 60

Master_Log_File: master-bin.000001

Read_Master_Log_Pos: 1426

Relay_Log_File: slave-relay-bin.000002

Relay_Log_Pos: 1285

Relay_Master_Log_File: master-bin.000001

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

Replicate_Do_DB:

Replicate_Ignore_DB:

Replicate_Do_Table:

Replicate_Ignore_Table:

Replicate_Wild_Do_Table:

Replicate_Wild_Ignore_Table:

Last_Errno: 0

Last_Error:

Skip_Counter: 0

Exec_Master_Log_Pos: 1426

Relay_Log_Space: 1458

Until_Condition: None

Until_Log_File:

Until_Log_Pos: 0

Master_SSL_Allowed: No

Master_SSL_CA_File:

Master_SSL_CA_Path:

Master_SSL_Cert:

Master_SSL_Cipher:

Master_SSL_Key:

Seconds_Behind_Master: 0

Master_SSL_Verify_Server_Cert: No

Last_IO_Errno: 0

Last_IO_Error:

Last_SQL_Errno: 0

Last_SQL_Error:

Replicate_Ignore_Server_Ids:

Master_Server_Id: 201

Master_UUID: 3ff67e00-c3d0-11e4-850f-000c29c0a8e2

Master_Info_File: mysql.slave_master_info

SQL_Delay: 0

SQL_Remaining_Delay: NULL

Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it

Master_Retry_Count: 86400

Master_Bind:

Last_IO_Error_Timestamp:

Last_SQL_Error_Timestamp:

Master_SSL_Crl:

Master_SSL_Crlpath:

Retrieved_Gtid_Set:

Executed_Gtid_Set:

Auto_Position: 0

1 row in set (0.00 sec)

10、验证

10.1、检测数据是否同步

从master建表并插入数据,然后查看slave节点是否同步.

10.2、检测binlog是否同步

查看master进行更新是,slave的binlog是否也在同步更新.

mysqlbinlog命令可以查看二进制文件.

时间: 2024-08-10 04:46:26

MySql主从复制实验的相关文章

Mysql 主从复制实验

Root 密码设为123 apt-get install mysql-server 设置密码 moses123 设置 192.168.68.21 22 23试用 修改/etc/my.conf 禁用bind-address =127.0.0.1 修改如下内容: [mysqld] log-bin=mysql-bin###启用二进制日志,去掉注释即可 server-id=1###数据库ID号,1:表示为Master:master_id范围:1到231之间的正整数值:每个同步服务器都必须设定一个唯一的编

Mysql主从复制、读写分离工作原理+配置

Mysql的 Replication 是一个异步的复制过程,从一个 Mysql instace(我们称之为 Master)复制到另一个 Mysqlinstance(我们称之 Slave).在 Master 与 Slave 之间的实现整个复制过程主要由三个线程来完成,其中两个线程(Sql线程和IO线程)在 Slave 端,另外一个线程(IO线程)在 Master 端. MySQL 复制的基本过程如下: 1. Slave 上面的IO线程连接上 Master,并请求从指定日志文件的指定位置(或者从最开

MySQL主从复制、读写分离、高可用集群搭建

MySQL主从复制.读写分离.高可用集群搭建  一.服务介绍   1.1 Keepalived     Keepalived,见名知意,即保持存活,其目的是解决单点故障,当一台服务器宕机或者故障时自动切换到其他的服务器中.Keepalived是基于VRRP协议实现的.VRRP协议是用于实现路由器冗余的协议,VRRP协议将两台或多台路由器设备虚拟成虚拟设备,可以对外提供虚拟路由器IP(一个或多个),即漂移IP(VIP). 1.2 ProxySQL ProxySQL是一个高性能,高可用性的MySQL

linux笔记 第四十课 mysql主从复制

1.MYSQL复制的基础概念 2.MYSQL复制的实现 3.MYSQL复制架构及双主模型演示 4.MYSQL复制监控/常见问题及解决方案 5.MariaDB  GTID及多源复制 6.MariaDB  GTID读写分离及mysql-proxy的使用 一.MySQL主从复制的基础知识 二.MySQL主从复制实现(以mariadb 5.5.36为例) 实验环境:主服务器(node1)172.16.100.7 从服务器(node2)172.168.100.8 软件:mariadb-5.5.36-lin

基于SSL的Mysql主从复制

一.实验目的: 1.跨越互联网加密复制 mysql基于SSL加密连接,为安全从服配置证书,从服拿账号到主服复制时,必须得到主服验证.双方建立SSL会话. 二.实验架构 在分布式架构中,时间必须同步 主节点: station20:192.168.1.20 从节点: station21:192.168.1.21 三.实验步骤 1.建立ssh互信 [[email protected] ~]# echo -e"192.168.1.21\tstation21\tstation21.example.com&

2-16 mysql主从复制

2-16 mysql主从复制 1. 部署MYSQL主从同步 <M-S> 环境:mysql版本一致,均为5.7.18 master xuegod4  ip  192.168.10.34   数据库密码 yourpasswd slave  xuegod5  ip  192.168.10.35   数据库密码 yourpasswd 1.1 配置主数据库xuegod4 1.1.1 创建需要同步的数据库: mysql> create database HA; mysql> use HA; m

【大型网站技术实践】初级篇:搭建MySQL主从复制经典架构 一、业务发展驱动数据发展

一.业务发展驱动数据发展 随着网站业务的不断发展,用户量的不断增加,数据量成倍地增长,数据库的访问量也呈线性地增长.特别是在用户访问高峰期间,并发访问量突然增大,数据库的负载压力也会增大,如果架构方案不够健壮,那么数据库服务器很有可能在高并发访问负载压力下宕机,造成数据访问服务的失效,从而导致网站的业务中断,给公司和用户造成双重损失.那么,有木有一种方案能够解决此问题,使得数据库不再因为负载压力过高而成为网站的瓶颈呢?答案肯定是有的. 目前,大部分的主流关系型数据库都提供了主从热备功能,通过配置

mysql主从复制--傻瓜式操作

使用mysql主从复制的好处有: 1.采用主从服务器这种架构,稳定性得以提升.如果主服务器发生故障,我们可以使用从服务器来提供服务. 2.在主从服务器上分开处理用户的请求,可以提升数据处理效率. 3.将主服务器上的数据复制到从服务器上,保护数据免受意外的损失. 环境描述: 新企业要搭建架构为主从复制的mysql数据库. 主服务器(mysql-master):IP地址:172.17.0.142 从服务器(mysql-slave)  :IP地址:172.17.0.45 主从服务器均可正常提供服务.

mysql主从复制以及读写分离

mysql的主从复制以及读写分离 前言:我们前面搭建过LAMP和LNMP,做过了web服务器群集和热备,web服务器坏了我们是不怕了,但是我们要知道,网站的数据有很多是存储在数据库里面的,例如注册的会员,发的文章,购物的订单等信息.当然我们可以给数据库做备份,但是如果每天00:00做一次备份,那么如果在23:59数据丢失了,那么就会丢失一天的数据,有没有一种方法能实现实时备份,就是说有数据产生就立即备份,答案当然是有,也就是今天我们要学习的mysql主从复制.有点类似于前面我们学习过的rsync