详细说linux下mysql的备份

昨天试了一个中午,用mysql的备份工具就是备份不了,今天详细记录下备份步骤

用SQLyogEnt工具备份,数据量大了出问题的,害了我好多次了,容易出错,用mysql自带的工具备份就不错。下面是步骤

1.先用工具SQLyogEnt连上mysql服务器

2.然后编辑下root·localhost用户的密码

3.在linux服务器上建个目录用来存放备份文件/backdata/

cd /usr/local/mysql/bin/
mysqldump -u用户名 -p密码 --databases 库名 >/backdata/ddd07-11-15.sql

恢复语法
mysqladmin create target_db_name

mysql target_db_name < backup-file.sql

即 mysql 库名 < 文件名

OK,注意,-u后面没有空格, 你只需要把上面的中文换成你的相关信息就可以了!

下面是游戏合区的相关sql语句,是苏枫写的,有待完善
帐号服务器上的修改

update `ACCSTORE0000` set ACCOUNT=Rtrim(ACCOUNT) + '2q'

到另一个区的服务器里找出最大的UID
SELECT max(UID) FROM `ACCSTORE0000`

比如是 1000066668

然后替换
update `ACCSTORE0000` set UID=UID + 1000066668

-------------------------
在游戏服务器上修改

update CHARBASE set name=CONCAT(rtrim(name),'1q')
update `CHARBASE` set ACCID=ACCID + 1000066668

update `ARMY` set NAME=Rtrim(NAME) + '2q'
update `ARMY` set GENNAME=Rtrim(GENNAME) + '2q'

好像GENID也要修改的,修改方法同UID,取另一服务器的最大值得加上
-------------------------

update ``BALANCE`` set ACCOUNT=Rtrim(ACCOUNT) + '2q'
update ``BALANCE`` set ACCID=ACCID + 1000066668

其他要改的表一样处理

重名的话,先吧另一个区的人名表导到要修改的区的数据库里,不过表名别一样,然后就用
where 人名 not in (select 人名 from 表名)