求大牛,mysqlmysql 主从备份切换详细步骤,主好了之后,再切回

mysql5.6+版本主从设置(mysql5.5之后的主从设置跟5.5之前的设置有一些差距)
怎么安装mysql,这里不说了,只说它的主从复制,步骤如下
在进行主从设置之前
首先确保mysql主从服务器之间的数据库端口防火墙互相打开,
尽量确保主从数据库账户一致性(主从切换使用),否则将操作失败,
其次是确保mysql账户对my目录有&可读写&权限非&可写&权限,
为了确保不出意外,最好删除之前陈旧的mysql-bin、mysql日志,然后重启mysql
在主服务器上新建一个new_test数据库并为其建一个test表,然后导出导入到从服务器上(测试主从使用)服务器上可替换成现有的数据库进行操作(我这里主从上各建立一个相同账户和密码,相同的端口配置,为了主从切换,方便测试,记得防火墙端口和日志位置读写权限一定要有的)
1、主从服务器分别作以下操作:
1.1、版本一致
1.2、初始化表,并在后台启动mysql
1.3、修改root的密码
2、修改主服务器master:
log-bin=mysql-bin //[必须]启用二进制日志
server-id=1 //[必须]默认是1,一般取IP最后一段
bing-address=0.0.0.0
log-bin=mysql-bin.log(必须,数据库日志文件,主从必须)
binlog-do-db =new_test (要记录的数据库,多个可换行多次设置)
replicate-do-db =new_test (要复制的数据库,多个可换行过个设置)
binlog-ignore-db=mysql //不对mysql库进行日志记录操作 如下意思雷同
binlog-ignore-db=test
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
replicate-ignore-db=test //不对test进行复制操作 如下意思雷同
replicate-ignore-db=mysql
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema
3、修改从服务器slave:
bing-address=0.0.0.0 //意思是允许所有 机器 服务器安全起见可设置为指定的服务器IP地址 如 116.128.1.10等
log-bin=mysql-bin.log
server-id=2
binlog-do-db =new_test
replicate-do-db =new_test
binlog-ignore-db=mysql
binlog-ignore-db=test
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
replicate-ignore-db=test
replicate-ignore-db=mysql
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema
4、重启两台服务器的mysql
service mysql restart
5、在主服务器上建立帐户并授权slave:
#/usr/local/mysql/bin/mysql -u数据库账户名 -p数据库密码
mysql&GRANT REPLICATION SLAVE ON *.* to 'newback_username'@'%' identified by 'newback_pwd'; //一般不用root帐号,&%&表示所有客户端都可能连(安全起见可将%替换成指定服务器IP,如116.121.1.10),只要帐号,密码正确。
6、登录主服务器的mysql,查询master的状态(可在phpmyadmin 中执行次操作)
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 | 120 | | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
注:执行完此步骤后不要再操作主服务器MYSQL,防止主服务器状态值变化
7、配置从服务器Slave:
mysql&change master to master_host='116.121.1.10',master_port=1223,master_user='newback',master_password='cctv@12315#$',master_log_file='mysql-bin.;,master_log_pos=120 //注意不要断开,master_port为mysql服务器端口号(无引号),master_user为执行同步操作的数据库账户,&120&无单引号(此处的120就是show master status 中看到的position的值,这里的mysql-bin.000001就是file对应的值)。(此处可在从服务器phpmyadmin中用sql语句操作)
Mysql& //启动从服务器复制功能(可在phpmyadmin中执行该SQL语句)
8、检查从服务器复制功能状态:
mysql& show slave status\G (可在从服务器phpmyadmin中执行&show slave status& SQL语句)
*************************** 1. row ***************************
&&&&&&&&(省略部分)
Slave_IO_Running: Yes //此状态必须YES
Slave_SQL_Running: Yes //此状态必须YES
&&&&&&&&(省略部分)
注:Slave_IO及Slave_SQL进程必须正常运行,即YES状态,否则都是错误的状态(如:其中一个NO均属错误)。
以上操作过程,主从服务器配置完成。
9、主从服务器测试:
在主服务器new_test数据库中的test表中插入 或者更新一条记录,如果从服务器同样更新 插入 则配置正确,否则错误
10、mysql5.5+版本与mysql5.5之前版本的一些差异:
其中大部分的内容相似 主要是5.5之后不再支持master打头的参数 如: master-host,master-user,master-password,master-port等。 错误如下: [ERROR] /usr/local/mysql/bin/mysqld: unknown variable 'master-host=192.168.2.182' 主配置不变,依旧是 server-id=1 log-bin=log binlog-do-db=database1 //需要同步的数据库 binlog-do-db=database2 binlog-ignore-db=mysql //被忽略的数据库 &&&&(省略部分) 从配置改为(注意下列注释部分,统统被废弃了): server-id=2 #master-host=192.168.124.51 #master-user= AffairLog #master-password= password #master-port=3306 #master-connect-retry=60 replicate-do-db=database1 //同步的数据库 replicate-do-db=database2 replicate-ignore-db=mysql //被忽略的数据库 其次是不能直接使用slave start 或者start slave 命令了,因为那样会报错, 我们需要使用change master to 即: mysql&change master to &master_host='192.168.124.51', &master_user='username', &master_password='password', &master_log_file='bin-log.;, &master_log_pos=120; 然后 (也可一句话执行如:&change master to master_host='116.121.1.10',master_port=1223,master_user='newback',master_password='cctv@12315#$',master_log_file='mysql-bin.;,master_log_pos=120& 【实际命令去掉外面的双引号,端口号和master_log_pos不加引号】 ) 其他一切不变
您对本文章有什么意见或着疑问吗?请到您的关注和建议是我们前行的参考和动力&&
您的浏览器不支持嵌入式框架,或者当前配置为不显示嵌入式框架。页面导航:
→ 正文内容 MHA mysql主从数据库手动切换
MHA实现mysql主从数据库手动切换的方法
这篇文章主要介绍了MHA实现mysql主从数据库手动切换的方法,详细的讲述了主从数据库切换的步骤与方法,非常实用,需要的朋友可以参考下
本文实例讲述了MHA实现mysql主从数据库手动切换的方法,分享给大家供大家参考。具体方法如下:
一、准备工作
1、分别在Master和Slave执行如下,方便mha检查复制:
代码如下:grant all privileges on *.* to 'root'@'10.1.1.231' identified by 'rootpass';
grant all privileges on *.* to 'root'@'10.1.1.234' identified by 'rootpass';
grant replication slave on *.* to 'jpsync'@'10.1.1.231' identified by 'jppasswd';
grant replication slave on *.* to 'jpsync'@'10.1.1.234' identified by 'jppasswd';
2、将master设置为只读
代码如下:mysql& set global read_only=1;
Query OK, 0 rows affected (0.00 sec)
mysql& show variables like 'read_only';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| read_only&&&& | ON&&& |
+---------------+-------+
1 row in set (0.00 sec)
代码如下:#masterha_master_switch --master_state=alive --conf=/etc/f&&& --new_master_host=10.1.1.231& --new_master_port=63306
或非交互模式:
代码如下:#masterha_master_switch --master_state=alive --conf=/etc/f&&& --new_master_host=10.1.1.231& --new_master_port=63306 ―interactive=0
二、切换完以后,如何让10.1.1.231为主,10.1.1.234为从,操作步骤:
1、主上执行:
代码如下:mysql&
+-------------------------+----------+--------------+--------------------------------------+-------------------+
| File&&&&&&&&&&&&&&&&&&& | Position | Binlog_Do_DB | Binlog_Ignore_DB&&&&&&&&&&&&&&&&&&&& | Executed_Gtid_Set |
+-------------------------+----------+--------------+--------------------------------------+-------------------+
| mysql-master-bin.000013 |&&&&& 120 | denovo_ng&&& | mysql,denovo,test,information_schema |&&&&&&&&&&&&&&&&&& |
+-------------------------+----------+--------------+--------------------------------------+-------------------+
1 row in set (0.00 sec)
2、在10.1.1.234上执行如下sql命令;
代码如下:change master to master_host='10.1.1.231',master_port=63306,master_user='jpsync',
master_password='jppasswd', master_log_file='mysql-master-bin.000013',master_log_pos=120;
mysql& show slave status\G;
*************************** 1. row ***************************
&&&&&&&&&&&&&& Slave_IO_State: Waiting for master to send event
&&&&&&&&&&&&&&&&& Master_Host: 10.1.1.231
&&&&&&&&&&&&&&&&& Master_User: jpsync
&&&&&&&&&&&&&&&&& Master_Port: 63306
&&&&&&&&&&&&&&& Connect_Retry: 60
&&&&&&&&&&&&& Master_Log_File: mysql-master-bin.000013
&&&&&&&&& Read_Master_Log_Pos: 120
&&&&&&&&&&&&&& Relay_Log_File: compute-0-52-relay-bin.000002
&&&&&&&&&&&&&&& Relay_Log_Pos: 290
&&&&&&& Relay_Master_Log_File: mysql-master-bin.000013
&&&&&&&&&&&& Slave_IO_Running: Yes
&&&&&&&&&&& Slave_SQL_Running: Yes
3、查看master状态,并测试
代码如下:mysql&
+-----------+------+-------+-----------+--------------------------------------+
| Server_id | Host | Port& | Master_id | Slave_UUID&&&&&&&&&&&&&&&&&&&&&&&&&& |
+-----------+------+-------+-----------+--------------------------------------+
|&&&&& 1052 |&&&&& | 63306 |&&&&& 1025 | e25a3e4a-39c0-11e4-80cb-b6 |
+-----------+------+-------+-----------+--------------------------------------+
1 row in set (0.00 sec)
主库10.1.1.231上插入记录
代码如下:mysql& insert into& test_slave_002 values(,,44.11,);
Query OK, 1 row affected (0.00 sec)
从库查询记录已经存在
代码如下:mysql& select * from test_slave_002 where id=;
+-----------+-----+-----------+--------------+----------+----------------+--------------+
| id&&&&&&& | tag | ticket_id | candidate_id | duration | source_file_id | source_start |
+-----------+-----+-----------+--------------+----------+----------------+--------------+
|&& 1 |&&&& 55555 |&&&&&&& 99999 |&&& 44.11 |&&&&&&&&&& 2222 |&&&&&&& 91919 |
+-----------+-----+-----------+--------------+----------+----------------+--------------+
1 row in set (0.00 sec)
4、更新配置文件:
更新主库my.cnf配置添加
代码如下:skip_slave_start
注意:防止重启数据库,启动slave进程,导致数据不一致。
更新从库my.cnf配置添加,设置slave库为只读:
代码如下:read_only=1
relay_log_purge=0
然后重启主库和从库,观察库的信息:
代码如下:mysql&
+----+--------+------------------+------+-------------+------+-----------------------------------------------------------------------+------------------+
| Id | User&& | Host&&&&&&&&&&&& | db&& | Command&&&& | Time | State&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& | Info&&&&&&&&&&&& |
+----+--------+------------------+------+-------------+------+-----------------------------------------------------------------------+------------------+
|& 1 | jpsync | 10.1.1.234:49085 | NULL | Binlog Dump |&& 17 | Master has sent waiting for binlog to be updated | NULL&&&&&&&&&&&& |
|& 2 | root&& | localhost&&&&&&& | NULL | Query&&&&&& |&&& 0 | init&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& | show processlist |
+----+--------+------------------+------+-------------+------+-----------------------------------------------------------------------+------------------+
2 rows in set (0.00 sec)
+-------------------------+----------+--------------+--------------------------------------+-------------------+
| File&&&&&&&&&&&&&&&&&&& | Position | Binlog_Do_DB | Binlog_Ignore_DB&&&&&&&&&&&&&&&&&&&& | Executed_Gtid_Set |
+-------------------------+----------+--------------+--------------------------------------+-------------------+
| mysql-master-bin.000014 |&&&&& 120 | denovo_ng&&& | mysql,denovo,test,information_schema |&&&&&&&&&&&&&&&&&& |
+-------------------------+----------+--------------+--------------------------------------+-------------------+
1 row in set (0.00 sec)
代码如下:mysql& show slave status\G;
*************************** 1. row ***************************
&&&&&&&&&&&&&& Slave_IO_State: Waiting for master to send event
&&&&&&&&&&&&&&&&& Master_Host: 10.1.1.231
&&&&&&&&&&&&&&&&& Master_User: jpsync
&&&&&&&&&&&&&&&&& Master_Port: 63306
&&&&&&&&&&&&&&& Connect_Retry: 60
&&&&&&&&&&&&& Master_Log_File: mysql-master-bin.000014
&&&&&&&&& Read_Master_Log_Pos: 120
&&&&&&&&&&&&&& Relay_Log_File: compute-0-52-relay-bin.000005
&&&&&&&&&&&&&&& Relay_Log_Pos: 290
&&&&&&& Relay_Master_Log_File: mysql-master-bin.000014
&&&&&&&&&&&& Slave_IO_Running: Yes
&&&&&&&&&&& Slave_SQL_Running: Yes
+----+-------------+-----------+------+---------+------+-----------------------------------------------------------------------------+------------------+
| Id | User&&&&&&& | Host&&&&& | db&& | Command | Time | State&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& | Info&&&&&&&&&&&& |
+----+-------------+-----------+------+---------+------+-----------------------------------------------------------------------------+------------------+
|& 1 | system user |&&&&&&&&&& | NULL | Connect |&& 58 | Waiting for master to send event&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& | NULL&&&&&&&&&&&& |
|& 2 | system user |&&&&&&&&&& | NULL | Connect |&& 58 | Slave ha waiting for the slave I/O thread to update it | NULL&&&&&&&&&&&& |
|& 3 | root&&&&&&& | localhost | NULL | Query&& |&&& 0 | init&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& | show processlist |
+----+-------------+-----------+------+---------+------+-----------------------------------------------------------------------------+------------------+
3 rows in set (0.00 sec)
希望本文所述对大家的MySQL数据库程序设计有所帮助。
您可能感兴趣的文章:
上一篇:下一篇:
最 近 更 新
热 点 排 行页面导航:
→ 正文内容 linux系统下实现mysql热备份
linux系统下实现mysql热备份详细步骤(mysql主从复制)
这篇文章主要介绍了linux系统下实现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
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.4
Mysql:Mysql-5.0.41.tar.gz辅助工具:SSH Secure Shell Client
两台测试IP&服务器: 代码如下:Master Server: 192.168.1.2/Linux CentOS5.4/MYSQL 5.0Slave Server: 192.168.1.3/Linux CentOS5.4/MYSQL 5.0&安装配置步骤:
&1、首先在Linux环境下分配好磁盘分区以便留足MySQL数据库的备份空间 代码如下:[root@vps 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 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&替换/f文件,进入源码包,执行命令 代码如下:#cd /home/Mysql-5.0.41#cp support-files/f /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/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 restartShutting down MySQL. [ 确定 ]Starting MySQL [ 确定 ][root@localhost mysql]#
到这里MySQL就装好了。&
3、配置MySQL5.0的复制(Replication)功能
&一.将master设置为只读。
mysql& flush t
二.用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.sock
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 = 6,48,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
innodb_log_files_in_group = 3
innodb_max_dirty_pages_pct = 90
innodb_lock_wait_timeout = 120
innodb_file_per_table = 0
&#log-slow-queries = /media/raid10/mysql/3306/slow.log
#long_query_time = 10
&[mysqldump]
max_allowed_packet = 32M&
四.在master机上为slave机添加一同步帐号
代码如下:mysql& grant replication slave on *.* to 'admin'@'172.29.141.115' identified by '';
五.配置slave的my.cnf,添加以下内容
1.如果mysql是5.5.3-m3 的版本,只需
在[mysqld]字段下添加如下内容
server-id=2
&2.如果是5.0x的版本,需要
在[mysqld]字段下添加如下内容
代码如下:server-id=2
log-bin=mysql-bin //这是同步的binlog,具体以你的binlog为准
master-host=172.29.141.112
master-user=admin
master-password=
master-port=3306
master-connect-retry=60 //如果发现主服务器断线,重新连接的时间差;
replicate-do-db=blog //同步的数据库,不写本行 表示 同步所有数据库
replicate-ignore-db=mysql //不需要备份的数据库
log-slave-update
slave-skip-errors
&我的mysql是5.5.3,这里给出我的f配置文件
代码如下:[client]
character-set-server = utf8
port = 3306
socket = /tmp/mysql.sock
character-set-server = utf8
replicate-ignore-db = mysql
replicate-ignore-db = test
replicate-do-db = blog
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_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 = 60
slave-skip-errors = 6,48,1396
&#master-host=172.29.141.112
#master-user = admin
#master-password =
#master-port = 3306
server-id = 2
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
innodb_log_files_in_group = 3
innodb_max_dirty_pages_pct = 90
innodb_lock_wait_timeout = 120
innodb_file_per_table = 0
#log-slow-queries = /media/raid10/mysql/3306/slow.log
#long_query_time = 10
[mysqldump]
max_allowed_packet = 32M
&六.通过查看master的状态(在master上查看),为配置slave做准备
代码如下:mysql& show master status/G;
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id: 13
Current database: blog
*************************** 1. row ***************************
File: binlog.000005
Position: 592
Binlog_Do_DB: blog
Binlog_Ignore_DB: mysql
1 row in set (0.01 sec)
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&
mysql& change master to master_host='172.29.141.112', master_user='admin', master_password='', master_log_file='binlog.000005', master_log_pos=488;mysql& CHANGE MASTER TO MASTER_CONNECT_RETRY=60;
&这个与5.0的配置my.cnf作用是一样的,配置成与master相对应的内容
主要是配置slave,让slave知道从master的哪个binlog上的哪个位置复制数据。所以需要知道master的ip,user_name,user_passwd,binlog,binlog_position以及多长时间连接一次master
&八.开启slave
代码如下:mysql&
&九.解除master只读限制,并做测试 代码如下:mysql&
mysql& create longxibendi ( a int, b int );十.从slave上查看
代码如下:mysql&
+-----------------------+
| 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.[mysql]ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
这个错误,网上有很多说法,其实直接的原因是mysql服务器没有启动
之前我按照5.0x配置master-slave,然后启动slave,在连接slave,就会报这个错误
后来发现原因是,mysql slave没有启动起来,然后去查错误日志,发现以下的字段
代码如下::55:20 mysqld_safe mysqld from pid file /media/raid10/mysql/3306/mysql.pid ended
:04:41 mysqld_safe Starting mysqld daemon with databases from /media/raid10/mysql/3306/data
InnoDB: The InnoDB memory heap is disabled
InnoDB: Mutexes and rw_locks use InnoDB's own implementation
:04:41 InnoDB: highest supported file format is Barracuda.
:04:41 InnoDB Plugin 1.0.6 log sequence number 44338
:04:41 [ERROR] /usr/local/webserver/mysql/libexec/mysqld: unknown variable 'master-connect-retry=60'
:04:41 [ERROR] Aborting
:04:41 InnoDB: Starting shutdown...
:04:43 InnoDB: S log sequence number 44348
:04:43 [Note] /usr/local/webserver/mysql/libexec/mysqld: Shutdown complete
&:04:43 mysqld_safe mysqld from pid file /media/raid10/mysql/3306/mysql.pid ended
:07:44 mysqld_safe Starting mysqld daemon with databases from /media/raid10/mysql/3306/data
InnoDB: The InnoDB memory heap is disabled
InnoDB: Mutexes and rw_locks use InnoDB's own implementation
:07:44 InnoDB: highest supported file format is Barracuda.
:07:45 InnoDB Plugin 1.0.6 log sequence number 44348
:07:45 [ERROR] /usr/local/webserver/mysql/libexec/mysqld: unknown variable 'master-host=172.29.141.112'
:07:45 [ERROR] Aborting
从上面的ERROR,知道 master-connect-retry=60这个my.cnf中的参数有问题,后来从网上搜资料,发现,mysql5.5.3-m3版本不支持这个参数,
然后我把这个参数注释掉,又发现不支持这个参数master-host,从上面的ERROR字段可以看出来。后来,就知道,5.5.3-m3不能按5.0.x那样配置
原来不需要从my.cnf中配置master相关信息,当然server-id是必须的。其他信息,通过 在命令行中 ,登陆 mysql服务器配置。
其实server-id的作用是
第一,标识,区分不同的slave,第二,防止环备份的发生
2.Last_Error: Last_SQL_Error:等错误
这个是从 slave上,运行 show slave status/G; 得到的。出现这个问题,最根本的原因是,slave 没有与当前的master的binlog 和binlog的position对应上
也就是说,slave传输的master binlog 不与当前master正使用的binlog以及binlog的行数对应。
3.[ERROR] Slave I/O: error connecting to master 'admin@172.29.141.112:3306' - retry-time: 60 retries: 86400, Error_code: 2003
这个就是因为防火墙的问题,所以用 /etc/init.d/iptables stop 关闭防火墙就OK了。
4.遇到ERROR 2013 (HY000): Lost connection to MySQL server during query错误。在/f的[mysqld]中添加skip-name-resolve
您可能感兴趣的文章:
上一篇:下一篇:
最 近 更 新
热 点 排 行

我要回帖

更多关于 mysql 主从 的文章

 

随机推荐