Mysql主从构造

Mysql主从结构

一、mysql主从的原理

1、Replication 线程

Mysql的 Replication 是一个异步的复制过程(mysql5.1.7以上版本分为异步复制和半同步两种模式),从一个 Mysql instace(我们称之为 Master)复制到另一个 Mysql instance(我们称之 Slave)。在 Master 与 Slave 之间的实现整个复制过程主要由三个线程来完成,其中两个线程(Sql线程和IO线程)在 Slave 端,另外一个线程(IO线程)在 Master 端。

要实现 MySQL 的 Replication ,首先必须打开 Master 端的Binary Log(mysql-bin.xxxxxx)功能,否则无法实现。因为整个复制过程实际上就是Slave从Master端获取该日志然后再在自己身上完全 顺序的执行日志中所记录的各种操作。打开 MySQL 的 Binary Log 可以通过在启动 MySQL Server 的过程中使用 “—log-bin” 参数选项,或者在 my.cnf 配置文件中的 mysqld 参数组([mysqld]标识后的参数部分)增加 “log-bin” 参数项。

MySQL的主从同步是一个很成熟的架构,优点为:

①在从服务器可以执行查询工作(即我们常说的读功能),降低主服务器压力;

②在从主服务器进行备份,避免备份期间影响主服务器服务;

③当主服务器出现问题时,可以切换到从服务器。

所以我在项目部署和实施中经常会采用这种方案.

+ 数据库目录及其它

my.cnf配置文件     /etc/my.cnf

mysql数据库位置    datadir=/var/lib/mysql

主数据库:192.168.2.119

从数据库:192.168.2.220

操作系统:RHEL5.x 32位

服务器类型: 虚拟机

+ mysql5.0.77 安装:

① 配置好linux的yum服务后,直接yum -y install mysql即可

附:安装php\mysql一条命令安装:yum -y install httpd php mysql mysql-server php-mysql

② 启动MySQL

service mysqld start(restart|stop)

一、设置主库

1、修改主库my.cnf,主要是设置个不一样的id和logbin(#这部可依具体环境而定,压力大的化可采用huge.cnf)

[root@localhost etc]#vi /etc/my.cnf

# 记住这部分一定要配置在[mysqld]后面,否则无法找到从节点,各个配置项的含义可自己查阅文档

[mysqld]

log-bin=mysql-bin

server-id=1

binlog-ignore-db=information_schema

binlog-ignore-db=cluster

binlog-ignore-db=mysql

2、启动主库生效

[root@localhost etc]service mysqld restart

3、登陆主库

[root@localhost etc]mysql -u root -p

4、赋予从库权限帐号,允许用户在主库上读取日志

mysql> grant all privileges on *.* to ‘用户名’@’%’ identified by ‘密码’;

5、检查创建是否成功

select user,host from mysql.user;

6、锁主库表

mysql> flush tables with read lock;

7、显示主库信息

记录File和Position,从库设置将会用到

mysql> show master status;

+——————+———-+————–+——————+

| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+——————+———-+————–+——————+

| mysql-bin.000001 98   |              |                  |

+——————+———-+————–+——————+

1 row in set (0.00 sec)

# 说明,如果执行这个步骤始终为Empty set(0.00 sec),那说明前面的my.cnf没配置对。

8、另开一个终端登陆220,打包主库迁移数据(如果你使用的yum安装,有默认数据库并未做任何改动,则不需要进行拷贝)

目的是为了保证两台服务器的mysql数据库一致,这里可以自行tar打包或者使用mysqldump命令备份恢复的方式进行。

二、设置从库

1、传输拿到主库包、解包

# 登陆从库

从上一步中备份的数据库恢复到220服务器节点上。

2、在119节点上解锁主库表(对应第一点设置主库中第6步锁主库表的操作)

mysql> unlock tables;

3、在220节点上修改从库my.cnf(位置一样)

[root@localhost etc]vi my.cnf

# 记住这部分一定要配置在[mysqld]后面,否则无法找到从节点,各个配置项的含义可自己查阅文档

[mysqld]

log-bin=mysql-bin

server-id=2

binlog-ignore-db=information_schema

binlog-ignore-db=cluster

binlog-ignore-db=mysql

replicate-do-db=test

replicate-ignore-db=mysql

log-slave-updates

slave-skip-errors=all

slave-net-timeout=60

master-host=192.168.2.119

master-user=root

master-password=pfingo

4、在220节点上验证连接主库

[root@localhost etc]mysql -h 192.168.2.119 -u 用户名 -p

5、在220节点从库上设置同步

#设置连接MASTER MASTER_LOG_FILE为主库的File,MASTER_LOG_POS为主库的Position

#注意下面第二条命令语句中的master_log_file=’mysql-bin.000001′, master_log_pos=98;对应为前面在主库中执行的show master status;结果

mysql> slave stop;

mysql> change master to master_host=’192.168.2.119′,master_user=’root’,master_password=’pfingo’,master_log_file=’mysql-bin.000001′, master_log_pos=98;

mysql> slave start;

6、启动从库服务

mysql> slave start;

7、进行测试

在主库上的test库上建立名为my

Mysql主从构造

相关文章:

你感兴趣的文章:

标签云: