主从的作用:
1.可以当做一种备份方式
2.用来实现读写分离,缓解一个数据库的压力
MySQL主从备份原理:
Mysql的主从复制至少是需要两个Mysql的服务,当然Mysql的服务是可以分布在不同的服务器上,也可以在一台服务器上启动多个服务。
如果想配置成为同一台上的话,注意安装的时候,选择两个不同的prefix=路径,同时开启服务器的时候,端口不能相同。
(1)首先确保主从服务器上的Mysql版本相同(做主从服务器的原则是,MYSQL版本要相同,如果不能满足,最起码从服务器的MYSQL的版本必须高于主服务器的MYSQL版本 )
(2)在主服务器上,设置一个从数据库的账户,使用REPLICATION SLAVE赋予权限,如:
mysql> GRANT REPLICATION SLAVE ON *.* TO 'slave001'@'192.168.0.99' IDENTIFIED BY
'123456';
Query OK, 0 rows affected (0.13 sec)
[原理]master 上提供binlog ,
slave 通过 I/O线程从 master拿取 binlog,并复制到slave的中继日志中
slave 通过 SQL线程从 slave的中继日志中读取binlog ,然后解析到slave中
主从复制大前提
需要master与slave同步,因为笔者的数据库数据量不大,所以无需考虑太多,直接把
master上的data复制到了slave上,但是如果是大的数据量,比如像taobao这个的系统
那么数据同步也是很难得,需要有一个完善的方案,有兴趣的可以看看这篇文章
http://www.taobaodba.com/html/564_%E5%A2%9E%E9%87%8F%E6%97%A5%E5%BF%97%E8%BF%AD%E4%BB%A3%E5%90%8C%E6%AD%A5%E5%92%8C%E9%98%BF%E5%9F%BA%E9%87%8C%E6%96%AF%E6%82%96%E8%AE%BA.html
实验环境准备:
OS: CentOS5.4
Mysql:Mysql-5.0.41.tar.gz
辅助工具:SSH Secure Shell Client
两台测试IP&服务器:
Master Server: 192.168.1.2/Linux CentOS5.4/MYSQL 5.0
Slave Server: 192.168.1.3/Linux CentOS5.4/MYSQL 5.0
安装配置步骤:
1、首先在Linux环境下分配好磁盘分区以便留足MySQL数据库的备份空间
[root@vps mysql]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/simfs 30G 2.0G 29G 7% /
2、MySQL数据库的安装:
1>将Mysql-5.0.41.tar.gz通过SSH 工具 上传到Linux系统的home目录下
2>建立MySQL使用者和群组:
#groupadd mysql
#useradd -g mysql mysql
3>解压缩Mysql-5.0.41.tar.gz源码包
#cd /usr/local/sofrware
#tar zxvf Mysql-5.0.41.tar.gz
4>进入源码目录编译安装
#cd /home/Mysql-5.0.41
#./configure --prefix=/usr/local/mysql --with-charset=gbk |注:配置Mysql安装路径并且支持中文
#make |注:编译
#make install |注:编译安装
5>替换/etc/my.cnf文件,进入源码包,执行命令
#cd /home/Mysql-5.0.41
#cp support-files/my-medium.cnf /etc/my.cnf
6>完成以上操作以后进行初始化数据库,进入已经安装好的mysql目录
#cd /usr/local/mysql
#bin/mysql_install_db --user=mysql |注:--user=mysql 初始化表并且规定用mysql用户
7>设置给mysql和root用户设定访问权限 我们先进入mysql目录
#cd /usr/local/mysql
#chown -R root /usr/local/mysql 注:设定root能访问/usr/local/mysq
#chown -R mysql /usr/local/mysql/var 注:设定mysql用户能访问/usr/local/mysql/var
#chgrp -R mysql /usr/local/mysql 注:设定mysql组能够访问/usr/local/mysq
8>启动mysql,进入已经安装好的目录
#cd /usr/local/mysql
#bin/mysqld_safe --user=mysql &
9>
修改mysql数据库超级用户root的缺省密码:
/usr/local/mysql/bin/mysqladmin -u root password 'mysql'
关闭mysql服务器
cd /usr/local/mysql/bin
./mysqladmin -u root -p shutdown
10>设定开机就启动mysql,进入源码目录下
# cd /home/Mysql-5.0.41
# cp support-files/mysql.server /etc/init.d/mysql
# chmod +x /etc/init.d/mysql
# chkconfig --level 345 mysql on
# service mysql restart
Shutting down MySQL. [ 确定 ]
Starting MySQL [ 确定 ]
[root@localhost mysql]#
到这里MySQL就装好了。
3、配置MySQL5.0的复制(Replication)功能
一.将master设置为只读。
mysql> flush tables with read lock;
二.用master中的data文件夹替换slave中的data文件夹
比如 用 tar zcvf mysql_data.gz /media/raid10/mysql/3306/data
然后 mv mysql_data.gz /media/raid10/htdocs/blog/wordpress/
因为我的 /media/raid10/htdocs/blog/wordpress/ 是 Nginx 的主目录
所以可以在 slave上,用wget下载这个文件,然后 解压,并覆盖slave上的data文件
注意:覆盖之前最好备份源文件
三.配置master的my.cnf,添加以下内容
在[mysqld]配置段添加如下字段
server-id=1
log-bin=/media/raid10/mysql/3306/binlog/binlog //这里写你的binlog绝对路径名
binlog-do-db=blog //需要同步的数据库,如果没有本行,即表示同步所有的数据库
binlog-ignore-db=mysql //被忽略的数据库
这里给出我的my.cnf配置文件
[client]
character-set-server = utf8
port = 3306
socket = /tmp/mysql.