MySql学习(转)

如何在MySQL5.x中复制一份从库

如何复制一份MySQL5.x的从库

现在的MySQL.x从库已经不够使用,需要在另一台机上复制配置一份从库。

(1) 在新的机器上编译好同版本的数据库,并能正常使用

(2) 在正在使用的从库上运行

slave stop;

然后将数据目录打包(tar),并复制到新的数据库作为数据库目录

slave start;

(3) 修改新的数据库my.cnf,注意与从库的相关的IP及权限的配置

(4)在主库上添加新的从库数据复制的操作权限

(5)查看最后的master.info信息(以便运行第8步)

(6)在新的从数据库上删除相关的文件:mysql*-relay-bin*,mysql-bin.*,master.info,relay-log.info

(7)启动新的从数据库

(8)登陆新的从数据库,运行以下:

slave stop;

CHANGE MASTER TO MASTER_HOST='ip',
MASTER_PORT=3306,
MASTER_USER='user',
MASTER_PASSWORD='pass',
MASTER_LOG_FILE='mysql-bin.000220',
MASTER_LOG_POS=951474375;

slave start;

 

标签: MySQL5.1 MySQL5.2 从库 主从同步 同步

mysql5.1+ 支持innodb

oracle 收购 innobase 后,mysql从5.1开始就不默认支持innodb引擎了,要使用innodb必须编译时,在configrue的时候,加上--with-plugins=innobase这个参数。

这样编译安装的mysql就支持InnoDB了。

可以用下面的命令进行测试:

mysql> show plugin;  

mysql>show engines\G ;

 

标签: MySQL5.1 MySQL5.2 innobase innodb

MySQL相关命令

/srv/mysql-4.0.24/bin/mysqldump --add-drop-table -uroot -p -h192.168.1.2 -P3306 haiguan > haiguan1.sql

 

标签: MySQL mysqldump mysqlimport

修改已存在的表增加ID属性为auto_increment自动增长

今天有需要将已经存在表设置自动增长属性

具体如下

alter table customers change id id int not null auto_increment primary key; 

扩展知识:

//添加字段并设置主键
ALTER TABLE tabelname ADD new_field_id int(5) unsigned default 0 not null auto_increment ,ADD primary key (new_field_id);

//加主关键字的索引
ALTER TABLE tablename ADD primary key(id);

//加索引
ALTER TABLE tablename CHANGE depno depno int(5) not null;
ALTER TABLE tablename ADD INDEX 索引名 (字段名1[,字段名2 …]);
ALTER TABLE tablename ADD INDEX emp_name (name);

//加唯一限制条件的索引
ALTER TABLE tablename ADD UNIQUE emp_name2(cardnumber);

//删除某个索引
ALTER TABLE tablename DROP INDEX emp_name;


//增加字段:
ALTER TABLE table_name ADD field_name field_type;

//删除字段
ALTER TABLE table_name DROP field_name;

//重命名列
ALTER TABLE table_name CHANGE field_name1 field_name2 integer;

//调整字段顺序 
ALTER TABLE `users` CHANGE `user_password` `user_password` varchar( 20 ) NOT NULL AFTER user_name;

//改变列的类型
ALTER TABLE table_name CHANGE field_name field_name bigint not null;
ALTER TABLE infos CHANGE list list tinyint not null default '0';

//修改原字段名称及类型:
ALTER TABLE table_name CHANGE old_field_name new_field_name field_type;

//重命名表
ALTER TABLE table_name rename new_table_name;

//级联更新 和 删除(红色部分,不区分大小写 )
DROP TABLE IF EXISTS `mail_model`;create TABLE mail_model(id varchar(50) primary key not null ,mail_filename varchar(200),content varchar(2000))ENGINE=InnoDB DEFAULT CHARSET=gbk;

DROP TABLE IF EXISTS `mail_model_extend`;create TABLE mail_model_extend(id int(6) auto_increment not null primary key,rid varchar(50) not null,content varchar(2000),INDEX (RID),FOREIGN KEY (RID) REFERENCES mail_model(ID) ON DELETE CASCADE ON UPDATE CASCADE)ENGINE=InnoDB DEFAULT CHARSET=gbk;

 

标签: MySQL auto_increment 自动增长

MySQL5主库断电后主从的恢复

 问题,主库异常断电后,重启主库机器,主从同步不能启动:

Slave_IO_Running: No
Slave_SQL_Running: Yes

解决办法:

(1)重启主库后找到主库的最后一条日志的数字

mysqlbinlog mysql-bin.000008 > 1.txt

tail -n 100000 1.txt > 2.txt

然后打开2.txt文件,跳到最后: 

 

# at 753870260

#080724 16:21:25 server id 2 end_log_pos 753870665 Query thread_id=185 exec_time=0 error_code=0 

 

找到数字为:753870260

(2)以下在从库上运行一次

CHANGE MASTER TO MASTER_HOST='主库连接IP',
MASTER_USER='masteruser',
MASTER_PASSWORD='masterpass',
MASTER_LOG_FILE='mysql-bin.000008',
MASTER_LOG_POS=753870260; 
 
(3)然后不断的运行以下,直到两个都是“YES” 
slave stop;
SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;
slave start;
show slave status\G
 
(4)见到以下状态,OK了!
Slave_IO_Running: No
Slave_SQL_Running: Yes

 

 

标签: 主从同步出错 MySQL5 主库断电

MySQL5主从同步出错处理

今天检查数据库发现一台MySQL Slave未和主机同步,查看Slave状态:
mysql> show slave status\G
Slave_IO_Running: Yes
Slave_SQL_Running: No
Last_Errno: 1062
....
Seconds_Behind_Master:NULL
原因:
1.程序可能在slave上进行了写操作 
2.也可能是slave机器重起后,事务回滚造成的.

解决办法I:
1.首先停掉Slave服务:slave stop
到主服务器上查看主机状态:
记录File和Position对应的值。


mysql> show master status;
+------------------+-----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+-----------+--------------+------------------+
| mysql-bin.000020 | 135617781 | | |
+------------------+-----------+--------------+------------------+
1 row in set (0.00 sec)

3.到slave服务器上执行手动同步:

mysql> change master to 
> master_host='master_ip',
> master_user='user', 
> master_password='pwd', 
> master_port=3307, 
> master_log_file='mysql-bin.000020', 
> master_log_pos=135617781;
1 row in set (0.00 sec)
mysql> slave start;
1 row in set (0.00 sec)

再次查看slave状态发现:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
...
Seconds_Behind_Master: 0
解决办法II:
mysql> slave stop;
mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
mysql> slave start;

/tmp1/mysql5/bin/mysql -uksu -h172.16.200.99 -P4307 -p

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值