Mysql主从备份停步后处理方法

1.停止同步

stop slave

2.查看错误表

show slave status/G

3.备注主库错误表
4.删除主从库错误表
5.跳过错误同步

SET GLOBAL sql_slave_skip_counter = 1;

6.还原主错误表数据
7.开启同步

start slave

Mysql 5.1.x上级到Mysql5.6.x(yum方式)

1.备份

mysqldump --all-databases -p -u root > /home/mysql.data.bak
cp /etc/my.cnf /etc/my.cnf.bak
cp -R /var/lib/mysql/mysql/ /var/lib/mysql/mysql_bak

2.删除老版本

yum remove mysql mysql-*
rpm -qa | grep mysql
yum remove mysql mysql-server mysql-libs compat-mysql51
yum list installed | grep mysql

3.安装

rpm -Uvh http://repo.mysql.com/mysql-community-release-el6-5.noarch.rpm
yum install mysql-community-server

4.安装后升级

mysql_upgrade --protocol=tcp -P3306 -p

升级完成,密码和数据库会自动有的

SqlServer安装后允许远程登录

1.外围应用管理器 远程连接 启动tcp/ip访问

2.配置管理器 tcp all 端口固定1433

3.重启服务

SQLSERVER2008 18456错误

1.以windows验证模式进入数据库管理器

2.重新填写密码和确认密码(改成个好记的)。把强制实施密码策略去掉

mysql客户端登陆提示”client option ‘secure_auth’ enabled”错误

使用mysql workbench登陆mysql服务器时提示授权算法错误。

查阅资料发现,mysql密码使用有两个阶段,第一阶段是登陆时使用hash value进行验证,第二阶段用password()函数生成密码。
换句话说,第一阶段用加密字符串登陆,第二阶段需要更改密码(create user/grant/set password)时使用password()函数来生成。

而第一阶段的验证hash value有两种,一种是pre-4.1版本,另一种是4.1版本的,前者是16字节的字符串,后者是41字节的字符串。
user表的password的长度也调整到了41字节。新版本的hash value总是以*开头。

为了兼容,加入了old_password()函数和old_passwords变量,old_passwords为1时,old_password()函数和password()是一样的,
old_passwords为0时,old_password()返回16字节的hash,password()返回41字节的hash。

为了使DBA可以控制采用哪种验证方式,加入了secure_auth变量,mysql 5.6.5之前的版本默认为0,之后的默认为1。
同时加入了–secure-auth选项。

相关的命令:

mysql> SET @@session.old_passwords = 0;
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT @@session.old_passwords, @@global.old_passwords;
+-------------------------+------------------------+
| @@session.old_passwords | @@global.old_passwords |
+-------------------------+------------------------+
|                       0 |                      1 |
+-------------------------+------------------------+
1 row in set (0.00 sec)

mysql> CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'newpass';
Query OK, 0 rows affected (0.03 sec)

mysql> SET PASSWORD FOR 'existinguser'@'localhost' = PASSWORD('existingpass');
Query OK, 0 rows affected (0.00 sec)

参考资料:
6.1.2.4. Password Hashing in MySQL

来源:http://www.csdn123.com/html/itweb/20130824/79559_79556_79552.htm

mysql客户端登陆提示"client option 'secure_auth' enabled"错误

使用mysql workbench登陆mysql服务器时提示授权算法错误。

查阅资料发现,mysql密码使用有两个阶段,第一阶段是登陆时使用hash value进行验证,第二阶段用password()函数生成密码。
换句话说,第一阶段用加密字符串登陆,第二阶段需要更改密码(create user/grant/set password)时使用password()函数来生成。

而第一阶段的验证hash value有两种,一种是pre-4.1版本,另一种是4.1版本的,前者是16字节的字符串,后者是41字节的字符串。
user表的password的长度也调整到了41字节。新版本的hash value总是以*开头。

为了兼容,加入了old_password()函数和old_passwords变量,old_passwords为1时,old_password()函数和password()是一样的,
old_passwords为0时,old_password()返回16字节的hash,password()返回41字节的hash。

为了使DBA可以控制采用哪种验证方式,加入了secure_auth变量,mysql 5.6.5之前的版本默认为0,之后的默认为1。
同时加入了–secure-auth选项。

相关的命令:

mysql> SET @@session.old_passwords = 0;
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT @@session.old_passwords, @@global.old_passwords;
+-------------------------+------------------------+
| @@session.old_passwords | @@global.old_passwords |
+-------------------------+------------------------+
|                       0 |                      1 |
+-------------------------+------------------------+
1 row in set (0.00 sec)

mysql> CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'newpass';
Query OK, 0 rows affected (0.03 sec)

mysql> SET PASSWORD FOR 'existinguser'@'localhost' = PASSWORD('existingpass');
Query OK, 0 rows affected (0.00 sec)

参考资料:
6.1.2.4. Password Hashing in MySQL

来源:http://www.csdn123.com/html/itweb/20130824/79559_79556_79552.htm

MySQL 5.1.x升级到MySQL 5.5.x

1、安装MySQL 5.5.x的yum源:
rpm -Uvh http://repo.webtatic.com/yum/centos/5/latest.rpm

rpm –import http://repo.webtatic.com/yum/RPM-GPG-KEY-webtatic-andy

wget -P /etc/yum.repos.d/ http://repo.webtatic.com/yum/webtatic.repo

2、安装MySQL客户端的支持包:
yum install libmysqlclient15 –enablerepo=webtatic

3、卸载MySQL老版本的软件包:
yum remove mysql mysql-*
此方法会删除依赖,如果不想可以使用以下方法
rpm -e  mysql-devel-* –nodeps
rpm -e mysql-libs-* –nodeps
rpm -e mysql-server-* –nodeps
rpm -e mysql-* –nodeps

4、安装MySQL 5.5的客户端和服务端:
yum install mysql55 mysql55-server –enablerepo=webtatic

error:mysql55w-libs conflicts with mysql-libs
rpm -e –nodeps mysql-libs-5.1.*

5、启动MySQL系统服务,更新数据库:

/etc/init.d/mysqld restart
mysql_upgrade

Linux更改MySQL目录

MySQL默认的数据文件存储目录为/var/lib/mysql。假如要把目录移到/home/data下需要进行下面几步:
1、home目录下建立data目录
   #cd /home
   #mkdir data
2、把MySQL服务进程停掉
   #service mysqld stop
3、把/var/lib/mysql整个目录移到/home/data
   #mv /var/lib/mysql /home/data/
4、编辑MySQL的配置文件/etc/my.cnf
  #vi  my.cnf    (用vi工具编辑my.cnf文件,找到下列数据修改之)
    # The MySQL server
    [mysqld]
    port   = 3306
    #socket  = /var/lib/mysql/mysql.sock(原内容,为了更稳妥用“#”注释此行)
    socket  = /home/data/mysql/mysql.sock   (加上此行)
5、修改MySQL启动脚本/etc/rc.d/init.d/mysql
  #vi /etc/rc.d/init.d/mysql
    #datadir=/var/lib/mysql    (注释此行)
    datadir=/home/data/mysql   (加上此行)

mysql主从备份

#####################mysql主从备份#####################
准备:
1.master server:192.168.1.124
2.slave server:192.168.1.127
3.mysql版本一致
步骤:
1.启动master,关闭slave
2.在master的/etv/my.cnf中加入
[mysqld]
server-id = 1
log-bin = mysql-bin
3.在slave的/etv/my.cnf中加入
[mysqld]
server-id = 10

#master
1.GRANT REPLICATION SLAVE ON *.* to ‘wuliu’@’192.168.1.127′ identified by ‘123456’;
2.Mysql> show master status;
+——————+———-+————–+——————+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+——————+———-+————–+——————+
| mysql-bin.000001 | 107 | | |
+——————+———-+————–+——————+
记录File和Position

#slave
1.启动mysql
2.mysql> change master to
master_host=’192.168.1.124′,
master_user=’wuliu’,
master_password=’123456′,
master_log_file=’mysql-bin.000001′,
master_log_pos=107;
3.mysql>start slave;
4.show slave status\G
其中Slave_IO_Running 与 Slave_SQL_Running 的值都必须为YES,才表明状态正常。

备注:
如果主服务器已经存在应用数据,则在进行主从复制时,需要做以下处理:
(1)主数据库进行锁表操作,不让数据再进行写入动作
mysql> FLUSH TABLES WITH READ LOCK;

(2)查看主数据库状态
mysql> show master status;

(3)记录下 FILE 及 Position 的值。
将主服务器的数据文件(整个/opt/mysql/data目录)复制到从服务器,建议通过tar归档压缩后再传到从服务器解压。

(4)取消主数据库锁定
mysql> UNLOCK TABLES;

Mysql升级后获取表结构问题

因为安装TFS需要把服务器上的Mysql从4.x升级到了5.x,一直运行的好好的。

后来说用mysql workbench连接后获取不到表结构,另报错:”1558: Column count of mysql.proc is wrong. Expected 20, found 16. Created with MySQL 50077, now running 50158. Please use mysql_upgrade to fix this error”

究其原因因为升级后系统表有改动不兼容。所以需要运行mysql_upgrade mysql -h 192.168.30.254 -u xxxxuojie -p处理

一款不错的Mysql Proxy–Amoeba

amoeba是一个以MySQL为底层数据存储,并对应用提供MySQL协议接口的proxy。它集中地响应应用的请求,依据用户事先设置的规则,将SQL请求发送到特定的数据库上执行。基于此可以实现负载均衡、读写分离、高可用性等需求。与MySQL官方的MySQL Proxy相比,作者强调的是amoeba配置的方便(基于XML的配置文件,用SQLJEP语法书写规则,比基于lua脚本的MySQL Proxy简单)。

amoeba相当于一个SQL请求的路由器,目的是为负载均衡、读写分离、高可用性提供机制,而不是完全实现它们。用户需要结合使用MySQL的 Replication等机制来实现副本同步等功能。amoeba对底层数据库连接管理和路由实现也采用了可插拨的机制,第三方可以开发更高级的策略类来替代作者的实现。这个程序总体上比较符合KISS的思想。

amoeba主要解决以下问题:

a). 数据切分后复杂数据源整合
b). 提供数据切分规则并降低数据切分规则给数据库带来的影响
c). 降低数据库与客户端连接
d). 读写分离路由

PS:网上看到文章说Amoeba比较占内存,有待考证。

参考:http://docs.hexnova.com/amoeba/