Chinaunix首页 | 论坛 | 博客
  • 博客访问: 921422
  • 博文数量: 276
  • 博客积分: 4182
  • 博客等级: 上校
  • 技术积分: 4486
  • 用 户 组: 普通用户
  • 注册时间: 2012-04-17 21:14
文章分类

全部博文(276)

文章存档

2014年(9)

2013年(132)

2012年(135)

分类: 系统运维

2013-02-04 16:14:46

0.主从复制的原理。
MySQL 使用3个线程来执行复制功能(其中1个在主服务器上,另两个在从服务器上。当发出START SLAVE时,从服务器创建一个I/O线程,以连接主服务器并让主服务器发送二进制日志。主服务器创建一个线程将二进制日志中的内容发送到从服务器。从服 务器I/O线程读取主服务器Binlog Dump线程发送的内容并将该数据拷贝到从服务器数据目录中的本地文件中,即中继日志。第3个线程是SQL线程,从服务器使用此线程读取中继日志并执行日志中包含的更新。SHOW PROCESSLIST语句可以查询在主服务器上和从服务器上发生的关于复制的信息。

1.准备:两个mysql 服务器。

如果你有台硬件机器,那非常好,分别安装mysql 就好了,如果能保持版本一致最好了。假如你只有一台机器也可以做这个事情的,之需要修改端口,服务的名称就好了。如果不能保持mysql的版本一致。
 
2.主从服务器的划分。
如 果两个mysql的版本一致,可以随便选择一个做为主服务器。如果两个版本不一致,选择低版本的mysql服务器作为主服务器,高版本的mysql服务器 作为从服务器。因为,从服务器要读取主服务器的二进制日志,到自己(从服务器)的中继日志里面,然后从服务执行中继日志文件的命令,因此要确保从主服务器 读取的二进制日志文件能被从服务器解析,根据新版本兼容旧版本的原则,因此要选择低版本的mysql服务器作为主服务器。
 
3.配置,
主服务器端的配置:
1.配置文件的修改,my.ini,在mysqld 下面添加:
server-id=1
log-bin=scfmysqlbinlog
2。在主服务器上建立一个账号,供从服务器连接到主服务器发送请求。记住用户名和密码
mysql> create user 'pccw'@'localhost' identified by 'pccw'; 
Query OK, 0 rows affected (0.03 sec) 
 mysql> grant replication slave on *.* to 'pccw'@'localhost';
 Query OK, 0 rows affected (0.02 sec)
3.查看当前使用的是哪个二进制文件,起始位置 。记住二进制文件和起始位置
mysql> show master status;
 +-----------------------+----------+--------------+------------------+ 
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | 
+-----------------------+----------+--------------+------------------+
 | scfmysqlbinlog.000002 | 390 |               |  
+-----------------------+----------+--------------+------------------+ 
1 row in set (0.00 sec)
从服务器的配置:
1.复制主服务器上得一个数据库到从服务器上,可以使用mysqldump命名。
2.配置文件的修改,my.ini,在mysqld 下面添加:
server-id=2
3.连接到从服务器,使用change master 命令 设置从服务器,包括连接主服务的参数和初始位置。
mysql> change master to 
master_host = '127.0.0.1', 
master_port = 8088,
master_user = 'pccw',
master_password = 'pccw', 
master_log_file = 'scfmysqlbinlog.000002',
ma ster_log_pos = 390;
 Query OK, 0 rows affected (0.09 sec)
注意:master_host 表示主服务的地址,同一台机器不要使用localhost
master_port 表示主服务使用的端口号,如果默认的 3306 可以不写
master_user,master_password  刚刚创建的用户名和密码
master_log_file ,ma ster_log_pos 主服务器正在使用的二进制文件,和该文件的起始位置。
4,让从服务器开始复制
mysql> start slave;
 Query OK, 0 rows affected (0.00 sec)
5,停止复制
mysql> stop slave; 
Query OK, 0 rows affected (0.00 sec)
 
4.测试
在主服务器端执行一条插入命令,看从服务器是否也插入了从服务器。
阅读(1066) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~