mysql主从备份6.docx_第1页
mysql主从备份6.docx_第2页
mysql主从备份6.docx_第3页
mysql主从备份6.docx_第4页
mysql主从备份6.docx_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

linux系统下实现mysql热备份详细步骤(mysql主从复制)作者: 字体:增加 减小 类型:转载 时间:2013-12-12 我要评论这篇文章主要介绍了linux系统下实现MySQL主从热备份 主从的作用:1.可以当做一种备份方式2.用来实现读写分离,缓解一个数据库的压力MySQL主从备份原理:Mysql的主从复制至少是需要两个Mysql的服务,当然Mysql的服务是可以分布在不同的服务器上,也可以在一台服务器上启动多个服务。如果想配置成为同一台上的话,注意安装的时候,选择两个不同的prefix=路径,同时开启服务器的时候,端口不能相同。(1)首先确保主从服务器上的Mysql版本相同(做主从服务器的原则是,MYSQL版本要相同,如果不能满足,最起码从服务器的MYSQL的版本必须高于主服务器的MYSQL版本 )(2)在主服务器上,设置一个从数据库的账户,使用REPLICATION SLAVE赋予权限,如:复制代码 代码如下:mysql GRANT REPLICATION SLAVE ON *.* TO slave0019 IDENTIFIED BY123456;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这个的系统实验环境准备:OS: CentOS5.4Mysql:Mysql-5.0.41.tar.gz辅助工具:SSH Secure Shell Client两台测试IP&服务器:复制代码 代码如下:Master Server: /Linux CentOS5.4/MYSQL 5.0Slave Server: /Linux CentOS5.4/MYSQL 5.0安装配置步骤:1、首先在Linux环境下分配好磁盘分区以便留足MySQL数据库的备份空间复制代码 代码如下:rootvps mysql# df -hFilesystem 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 mysql3解压缩Mysql-5.0.41.tar.gz源码包复制代码 代码如下:#cd /usr/local/sofrware#tar zxvf Mysql-5.0.41.tar.gz4进入源码目录编译安装复制代码 代码如下:#cd /home/Mysql-5.0.41#./configure -prefix=/usr/local/mysql -with-charset=gbk |注:配置Mysql安装路径并且支持中文#make |注:编译#make install |注:编译安装5替换/etc/f文件,进入源码包,执行命令复制代码 代码如下:#cd /home/Mysql-5.0.41#cp support-files/f /etc/f6完成以上操作以后进行初始化数据库,进入已经安装好的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/mysq8启动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 shutdown10设定开机就启动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 restartShutting down MySQL. 确定 Starting MySQL 确定 rootlocalhost 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的f,添加以下内容在mysqld配置段添加如下字段复制代码 代码如下:server-id=1log-bin=/media/raid10/mysql/3306/binlog/binlog /这里写你的binlog绝对路径名binlog-do-db=blog /需要同步的数据库,如果没有本行,即表示同步所有的数据库binlog-ignore-db=mysql /被忽略的数据库这里给出我的f配置文件复制代码 代码如下:clientcharacter-set-server = utf8port = 3306socket = /tmp/mysql.sockmysqldcharacter-set-server = utf8replicate-ignore-db = mysqlreplicate-ignore-db = testreplicate-ignore-db = information_schemauser = mysqlport = 3306socket = /tmp/mysql.sockbasedir = /usr/local/webserver/mysqldatadir = /media/raid10/mysql/3306/datalog-error = /media/raid10/mysql/3306/mysql_error.logpid-file = /media/raid10/mysql/3306/mysql.pidopen_files_limit = 10240back_log = 600max_connections = 5000max_connect_errors = 6000table_cache = 614external-locking = FALSEmax_allowed_packet = 16Msort_buffer_size = 1Mjoin_buffer_size = 1Mthread_cache_size = 300#thread_concurrency = 8query_cache_size = 20Mquery_cache_limit = 2Mquery_cache_min_res_unit = 2kdefault-storage-engine = MyISAMthread_stack = 192Ktransaction_isolation = READ-COMMITTEDtmp_table_size = 20Mmax_heap_table_size = 20Mlong_query_time = 3log-slave-updateslog-bin = /media/raid10/mysql/3306/binlog/binlogbinlog-do-db=blogbinlog-ignore-db=mysqlbinlog_cache_size = 4Mbinlog_format = MIXEDmax_binlog_cache_size = 8Mmax_binlog_size = 20Mrelay-log-index = /media/raid10/mysql/3306/relaylog/relaylogrelay-log-info-file = /media/raid10/mysql/3306/relaylog/relaylogrelay-log = /media/raid10/mysql/3306/relaylog/relaylogexpire_logs_days = 30key_buffer_size = 10Mread_buffer_size = 1Mread_rnd_buffer_size = 6Mbulk_insert_buffer_size = 4Mmyisam_sort_buffer_size = 8Mmyisam_max_sort_file_size = 20Mmyisam_repair_threads = 1myisam_recoverinteractive_timeout = 120wait_timeout = 120skip-name-resolve#master-connect-retry = 10slave-skip-errors = 1032,1062,126,1114,1146,1048,1396#master-host = #master-user = username#master-password = password#master-port = 3306server-id = 1innodb_additional_mem_pool_size = 16Minnodb_buffer_pool_size = 20Minnodb_data_file_path = ibdata1:56M:autoextendinnodb_file_io_threads = 4innodb_thread_concurrency = 8innodb_flush_log_at_trx_commit = 2innodb_log_buffer_size = 16Minnodb_log_file_size = 20Minnodb_log_files_in_group = 3innodb_max_dirty_pages_pct = 90innodb_lock_wait_timeout = 120innodb_file_per_table = 0#log-slow-queries = /media/raid10/mysql/3306/slow.log#long_query_time = 10mysqldumpquickmax_allowed_packet = 32M四.在master机上为slave机添加一同步帐号复制代码 代码如下:mysql grant replication slave on *.* to admin15 identified by 12345678;mysql flush privileges ;五.配置slave的f,添加以下内容注意:1.如果mysql是5.5.3-m3 的版本,只需在mysqld字段下添加如下内容server-id=22.如果是5.0x的版本,需要在mysqld字段下添加如下内容复制代码 代码如下:server-id=2log-bin=mysql-bin /这是同步的binlog,具体以你的binlog为准master-host=12master-user=adminmaster-password=12345678master-port=3306master-connect-retry=60 /如果发现主服务器断线,重新连接的时间差;replicate-do-db=blog /同步的数据库,不写本行 表示 同步所有数据库replicate-ignore-db=mysql /不需要备份的数据库log-slave-updateslave-skip-errors我的mysql是5.5.3,这里给出我的slave f配置文件复制代码 代码如下:clientcharacter-set-server = utf8port = 3306socket = /tmp/mysql.sockmysqldcharacter-set-server = utf8replicate-ignore-db = mysqlreplicate-ignore-db = testreplicate-do-db = blogreplicate-ignore-db = information_schemauser = mysqlport = 3306socket = /tmp/mysql.sockbasedir = /usr/local/webserver/mysqldatadir = /media/raid10/mysql/3306/datalog-error = /media/raid10/mysql/3306/mysql_error.logpid-file = /media/raid10/mysql/3306/mysql.pidopen_files_limit = 10240back_log = 600max_connections = 5000max_connect_errors = 6000table_cache = 614external-locking = FALSEmax_allowed_packet = 16Msort_buffer_size = 1Mjoin_buffer_size = 1Mthread_cache_size = 300#thread_concurrency = 8query_cache_size = 20Mquery_cache_limit = 2Mquery_cache_min_res_unit = 2kdefault-storage-engine = MyISAMthread_stack = 192Ktransaction_isolation = READ-COMMITTEDtmp_table_size = 20Mmax_heap_table_size = 20Mlong_query_time = 3log-slave-updateslog-bin = /media/raid10/mysql/3306/binlog/binlogbinlog_cache_size = 4Mbinlog_format = MIXEDmax_binlog_cache_size = 8Mmax_binlog_size = 20Mrelay-log-index = /media/raid10/mysql/3306/relaylog/relaylogrelay-log-info-file = /media/raid10/mysql/3306/relaylog/relaylogrelay-log = /media/raid10/mysql/3306/relaylog/relaylogexpire_logs_days = 30key_buffer_size = 10Mread_buffer_size = 1Mread_rnd_buffer_size = 6Mbulk_insert_buffer_size = 4Mmyisam_sort_buffer_size = 8Mmyisam_max_sort_file_size = 20Mmyisam_repair_threads = 1myisam_recoverinteractive_timeout = 120wait_timeout = 120skip-name-resolve#master-connect-retry = 60slave-skip-errors = 1032,1062,126,1114,1146,1048,1396#master-host=12#master-user = admin#master-password = 12345678#master-port = 3306server-id = 2innodb_additional_mem_pool_size = 16Minnodb_buffer_pool_size = 20Minnodb_data_file_path = ibdata1:56M:autoextendinnodb_file_io_threads = 4innodb_thread_concurrency = 8innodb_flush_log_at_trx_commit = 2innodb_log_buffer_size = 16Minnodb_log_file_size = 20Minnodb_log_files_in_group = 3innodb_max_dirty_pages_pct = 90innodb_lock_wait_timeout = 120innodb_file_per_table = 0#log-slow-queries = /media/raid10/mysql/3306/slow.log#long_query_time = 10mysqldumpquickmax_allowed_packet = 32M六.通过查看master的状态(在master上查看),为配置slave做准备复制代码 代码如下:mysql show master status/G;ERROR 2006 (HY000): MySQL server has gone awayNo connection. Trying to reconnect.Connection id: 13Current database: blog* 1. row *File: binlog.000005Position: 592Binlog_Do_DB: blogBinlog_Ignore_DB: mysql1 row in set (0.01 sec)ERROR:No query specified从上面的信息,可以看出,master现在使用的binlog是binlog.000005,position是592,那么下面的slave配置必须与这个对应。其实binlog.000005是当前master使用的binlog日志文件position是当前master使用的binlog.000005日志文件的位置简单理解为master正在使用哪个binlog的哪个数据行(位置)。七.如果是5.5.3-m3版本mysql,需要启动slave后,配置与master相关对应的信息(在slave上配置)注意,这个与第六步相对应复制代码 代码如下:mysql stop slave ;mysql change master to master_host=12, master_user=admin, master_password=12345678, master_log_file=binlog.000005, master_log_pos=488;mysql CHANGE MASTER TO MASTER_CONNECT_RETRY=60;这个与5.0的配置f作用是一样的,配置成与master相对应的内容主要是配置slave,让slave知道从master的哪个binlog上的哪个位置复制数据。所以需要知道master的ip,user_name,user_passwd,binlog,binlog_position以及多长时间连接一次master八.开启slave复制代码 代码如下:mysql start slave;九.解除master只读限制,并做测试复制代码 代码如下:mysql unlock tables;mysql use blog;mysql create longxibendi ( a int, b int );十.从slave上查看复制代码 代码如下:mysql use blog;mysql show tables;+-+| Tables_in_blog |+-+| longxibendi | wp_commentmeta | wp_comments | wp_links | wp_options | wp_postmeta | wp_posts | wp_term_relationships | wp_term_taxonomy | wp_terms | wp_usermeta | wp_users |+-+12 rows in set (0.00 sec)可以看到成功了!十一.配置过程中,可以用 show slave status/G; 在 slave上查看 slave的复制情况十二.如果出现什么问题,可能是防火墙的问题/etc/init.d/iptables stop 关闭 master 上的防火墙,或者进行相应的配置常遇到的错误与解决:1.mysqlERROR 2002 (HY000): Cant connect to local MySQL server through socket /var/lib/mysql/mysql.sock (2)这个错误,网上有很多说法,其实直接的原因是mysql服务器没有启动之前我按照5.0x配置master-slave,然后启动slave,在连接slave,就会报这个错误后来发现原因是,mysql slave没有启动起来,然后去查错误日志,发现以下的字段复制代码 代码如下:110505 01:55:20 mysqld_safe mysqld from pid file /media/raid10/mysql/3306/mysql.pid ended110505 02:04:41 mysqld_safe Starting mysqld daemon with databases from /media/raid10/mysql/3306/dataInnoDB: The InnoDB memory heap is disabledInnoDB: Mutexes and rw_locks use InnoDBs own implementation110505 2:04:41 InnoDB: highest supported file format is Barracuda.110505 2:04:41 InnoDB Plugin 1.0.6 started; log sequence number 44338110505 2:04:41 ERROR /usr/local/webserver/mysql/libexec/mysqld: unknown variable master-connect-retry=60110505 2:04:41 ERROR Aborting110505 2:04:41 InnoDB: Starting shutdown.110505 2:04:43 InnoDB: Shutdown completed; log sequence number 44348110505 2:04:43 Note /usr/local/webserver/mysql/libexec/mysqld: Shutdown complete110505 02:04:43 mysqld_safe mysqld from pid file /media/raid10/mysql/3306/mysql.pid ended110505 02:07:44 mysqld_safe Starting mysqld da

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论