yum remove mysql.i386
yum update mysql
/usr/bin/mysql_upgrade
yum remove mysql.i386
yum update mysql
/usr/bin/mysql_upgrade
一、必备软件:
1、LUA
可以去LUA的官方下载:www.lua.org
2、MySQL Proxy
这里有好多二进制版本。
http://mysql.cdpa.nsysu.edu.tw/Downloads/MySQL-Proxy/
或者去MYSQL官方下载源代码。
3、测试过程中取消了B和C的REPLICATION。这样SQL语句一下子就看出来从哪里来的。
如果是M-S(可以先在SLAVE上进行STOP SLAVE)
二、测试主机地址:
1、MySQL Proxy 安装地址:192.168.0.234(简称A)
2、MySQL 服务器地址:192.168.0.235(简称B)/236(简称C)
三、安装体验
如果是按照二进制包安装的,跳过这一步。
1、 LUA的安装
[root@localhost ~]#tar zxvf lua-5.1.2.tar.gz -C /usr/local
[root@localhost ~]# cd /usr/local/
[root@localhost local]# mv lua-5.1 lua
[root@localhost lua]# cd lua
[root@localhost lua]#make local;make install;
导出环境变量:
[root@localhost lua]#export LUA_CFLAGS=”-I/usr/local/include” LUA_LIBS=”-L/usr/local/lib -llua -ldl” LDFLAGS=”-lm”
2、MySQL Proxy 安装
[root@localhost ~]#tar -zxvf mysql-proxy-0.6.1-linux-rhel4-x86-32bit.tar.gz -C /usr/local/mysql/
[root@localhost ~]#cd /usr/local/mysql
[root@localhost mysql]#mv mysql-proxy-0.6.1-linux-rhel4-x86-32bit/ mysql-proxy
[root@localhost sbin]# export PATH=$PATH:/usr/local/mysql/mysql-proxy/sbin/
一.mysql库中的几个表的简介:
user: 决定是否允许或拒绝到来的连接,对于允许的连接,user表授予的权限指出用户的全局权限。这些权限适用于服务器上的all数据库。
db: 决定用户能从哪个主机存取哪个数据库,权限列决定允许哪个操作,授予的数据库级别的权限适用于数据库和它的表。
当你想要一个给定的db表行应用于若干主机时,db和host表一起使用.
tables_priv和columus_priv表类似于db表,但是更精致它们在表和列级应用而非在数据库级。授予表级别的权限适用于表和所有它的列,授予列级别的权限只适用于专用列.
procs_priv表适用于保存的程序。授予程序级别的权限只适用于单个程序。
二.当mysqld服务器启动时,将授权表的内容读入到内存中,你可以通过flush privileges语句或执行mysqladmin flush-privileges或mysqladmin reload命令让它重新读取表.
三.一些mysql权限系统做不到的。
1.你不能明显地指定给定的用户应该被拒绝访问,即,你不能明显地匹配用户然后拒绝连接。
2.你不能指定用户有权建立或删除数据库中的表,但不能创建或删除数据本身。
四.访问mysql时dns解析错误的解决方案.
1.找出dns服务器的错误并修复
2.在msyql授权表中指定IP号不是主机名
3.修改/etc/hosts
4.用-skip-name-resolve选项启动mysqld
5.用-skp-host-cache先项启动mysqld
五.设置帐户密码:
1.msyqladmin -u user_name -h host_name password “newpwd”
2. set password for ‘user’@'host’ = password(‘newpwd’)
3.grant usage on *.* To ‘user’@'%’ identified by ‘newpwd’
六.备份策略:
1.定期完全备份:
shell> mysqldump -single-transaction -all-databases>backup_sunday_1_PM.sql
这是在线非块备份,不会干扰对表的读写.以上是假定表为innodb,single-transaction使用一致性地读,并且保证mysqldump所看见的数据不会更改。对于其它类型的表必须假定备份过程中没有对Mysql账号进行管理更改.
2.增量备份:(应使用-log-bin选项启动Mysql服务器)
shell> mysqldump -single-transaction flush-logs -all-databases>backup_sunday_1_PM.sql
flush-logs通知服务器关闭当前的二进制日志并建一个新文件。执行命令后,可以删除之前的日志,然后备份之后新产生的日志文件就可。
3.恢复备份:
shell>>mysql < backup_sunday_1_PM.sql //导入备份的数据
shell>>mysqlbinlog gbichot2-bin.000007 | mysql //导入增量备份
七.mysqlbinlog 数据恢复技巧
1.前提:mysql服务器启用了二进制日志
2.指定时间:可以通过-start-date和-stop-date选项指定datetime格式的起止时间.
mysqlbinlog -stop-date=”2005-04-20 9:59:59″ /var/log/mysql/bin.123456\
mysql -u root -p mypwd
3.恢复位置:你可以更加准确的检查日志中的错误然后进行备份,这种方案更加精确.
措施:
a.先把大概出错的时间段时的sql语句全部重定向到临时文件中。
mysqlbinlog -start-date=’2005-04-20 9:59:59′ -stop-date=”2005-04-20 10:59:59″ \
/var/log/mysql/bin.123456 > /tmp/mysql_restore.sql
b.用文件编辑器打开寻找不想要的语句,记下错误日志的位置起始与结束
mysqlbinlog -stop-position=”368312″ /var/log/mysql/bin.123456 \
mysql -u root -pmypwd
mysqlbinlog -start-position=”368315″ /var/log/mysql/bin.123456 \
mysql -u root -pmypwd
1.如果在创建了任何数据库表之后改变字符集,必须对每个表运行:
myisamchk -r -q -set-character-set=charset
机器因故断电重启对web server的影响是很少的,但是对data server的危害却巨大的。这些倒来个彻底,由于机房原因所有的服务器全部重启了。不出所料,所有的服务重新开启后网站正常工作,很高兴数据库还能跑起来,看来伤害还不是特别大,不过还是很小心确认一下数据库的运转情况,首先进入一台mysql,从服务器
1.show processlist 查看了一下当前运行进程
wget http://www.lua.org/ftp/lua-5.1.4.tar.gz
tar zxvf lua-5.1.4.tar.gz
cd lua-5.1.4
make
今天上服务器一看,发现网页错误,无法连接数据库服务器。mysql服务自己down掉了,然后重新启动服务器,发现网页无法打开,提示: [mysql]Table tblName is marked as crashed and should be repairedMysql提示tblName表格已损坏,需要修复,解决方法:[root@mysqlserver ~]#more /var/log/mysqld.log
090718 11:22:07 [ERROR] /usr/libexec/mysqld: Table ‘ware’ is marked as crashed and should be repaired090718 11:22:07 [ERROR] /usr/libexec/mysqld: Sort aborted090718 11:23:42 [ERROR] /usr/libexec/mysqld: Table ‘ware’ is marked as crashed and should be repaired090718 11:23:42 [ERROR] /usr/libexec/mysqld: Sort aborted090718 11:24:01 [ERROR] /usr/libexec/mysqld: Table ‘ware’ is marked as crashed and should be repaired090718 11:24:01 [ERROR] /usr/libexec/mysqld: Sort aborted090718 11:25:19 [ERROR] /usr/libexec/mysqld: Table ‘ware’ is marked as crashed and should be repaired090718 11:25:19 [ERROR] /usr/libexec/mysqld: Sort aborted
进入到对应的数据库目录:[root@mysqlserver ~]# cd /var/lib/mysql/dbname
使用myisamchk修复:
[root@mysqlserver mysql]# myisamchk -r tblName
master端:
show master status;—查看状态:
show processlist; –查看slave下mysql进程信息
reset master; #慎用,将清空日志及同步position
|
mysql复制的时候遇到错误就停在哪里, 需要手工去出错, 例如这个错误: » Read more: mysql slave 1062错误
|
安装amoeba-mysql
下载amoeba-mysql,目前最新版本为amoeba-mysql-1.3.1-BETA.zip
mkdir /usr/local/amoeba/