linux系统下实现mysql热备份详细步骤(mysql主从复
制)
主从的作⽤:
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这个的系统
实验环境准备:
mysql下载starting the server
OS: CentOS5.4
Mysql:Mysql-5.0.
辅助⼯具: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.通过SSH ⼯具上传到Linux系统的home⽬录下
2>建⽴MySQL使⽤者和组:
复制代码代码如下:
#groupadd mysql
#useradd -g mysql mysql
3>解压缩Mysql-5.0.源码包
复制代码代码如下:
#cd /usr/local/sofrware
#tar zxvf Mysql-5.0.
4>进⼊源码⽬录编译安装
复制代码代码如下:
#cd /home/Mysql-5.0.41
#./configure --prefix=/usr/local/mysql --with-charset=gbk |注:配置Mysql安装路径并且⽀持中⽂#make |注:编译
#make install |注:编译安装
5>替换/etc/myf⽂件,进⼊源码包,执⾏命令
复制代码代码如下:
#cd /home/Mysql-5.0.41
#cp support-files/my-mediumf /etc/myf
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 /media/raid10/mysql/3306/data
然后 mv /media/raid10/htdocs/blog/wordpress/
因为我的 /media/raid10/htdocs/blog/wordpress/ 是 Nginx 的主⽬录
所以可以在 slave上,⽤wget下载这个⽂件,然后解压,并覆盖slave上的data⽂件注意:覆盖之前最好备份源⽂件
三.配置master的myf,添加以下内容
在[mysqld]配置段添加如下字段
复制代码代码如下:
server-id=1
log-bin=/media/raid10/mysql/3306/binlog/binlog //这⾥写你的binlog绝对路径名binlog-do-db=blog //需要同步的数据库,如果没有本⾏,即表⽰同步所有的数据库binlog-ignore-db=mysql //被忽略的数据库
这⾥给出我的myf配置⽂件
复制代码代码如下:
[client]
character-set-server = utf8
port = 3306
socket = /tmp/mysql.sock
[mysqld]
character-set-server = utf8
replicate-ignore-db = mysql
replicate-ignore-db = test
replicate-ignore-db = information_schema
user = mysql
port = 3306
socket = /tmp/mysql.sock
basedir = /usr/local/webserver/mysql
datadir = /media/raid10/mysql/3306/data
log-error = /media/raid10/mysql/3306/mysql_error.log pid-file = /media/raid10/mysql/3306/mysql.pid
open_files_limit = 10240
back_log = 600
max_connections = 5000
max_connect_errors = 6000
table_cache = 614
external-locking = FALSE
max_allowed_packet = 16M
sort_buffer_size = 1M
join_buffer_size = 1M
thread_cache_size = 300
#thread_concurrency = 8
query_cache_size = 20M
query_cache_limit = 2M
query_cache_min_res_unit = 2k
default-storage-engine = MyISAM
thread_stack = 192K
transaction_isolation = READ-COMMITTED
tmp_table_size = 20M
max_heap_table_size = 20M
long_query_time = 3
log-slave-updates
log-bin = /media/raid10/mysql/3306/binlog/binlog binlog-do-db=blog
binlog-ignore-db=mysql
binlog_cache_size = 4M
binlog_format = MIXED
max_binlog_cache_size = 8M
max_binlog_size = 20M
relay-log-index = /media/raid10/mysql/3306/relaylog/relaylog relay-log-info-file = /media/raid10/mysql/3306/relaylog/relaylog relay-log = /media/raid10/mysql/3306/relaylog/relaylog expire_logs_days = 30
key_buffer_size = 10M
read_buffer_size = 1M
read_rnd_buffer_size = 6M
bulk_insert_buffer_size = 4M
myisam_sort_buffer_size = 8M
myisam_max_sort_file_size = 20M
myisam_repair_threads = 1
myisam_recover
interactive_timeout = 120
wait_timeout = 120
skip-name-resolve
#master-connect-retry = 10
slave-skip-errors = 1032,1062,126,1114,1146,1048,1396
#master-host = 192.168.1.2
#master-user = username
#master-password = password
#master-port = 3306
server-id = 1
innodb_additional_mem_pool_size = 16M
innodb_buffer_pool_size = 20M
innodb_data_file_path = ibdata1:56M:autoextend
innodb_file_io_threads = 4
innodb_thread_concurrency = 8
innodb_flush_log_at_trx_commit = 2
innodb_log_buffer_size = 16M
innodb_log_file_size = 20M
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论