zoukankan      html  css  js  c++  java
  • mysql运维

    一、     数据库的备份
    1.     导出整个数据库
    mysqldump -u 用户名 -p 数据库名 > 导出的文件名
    例:mysqldump -u dbadmin -p myblog > myblog.sql
    2.     导出一个表
    mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名
    例:mysqldump -u dbadmin -p myblog wp_users> blog_users.sql
    3.     导出一个数据库结构
    mysqldump -u dbadmin -p -d --add-drop-table myblog > blog_struc.sql
    说明:-d 没有数据 --add-drop-table 在每个create语句之前增加一个drop table
    4.     导出数据库一个表结构
    mysqldump -u dbadmin -p -d --add-drop-table myblog  wp_users> blog_users_struc.sql
    说明:-d 没有数据 --add-drop-table 在每个create语句之前增加一个drop table
    带语言参数导出:mysqldump -uroot -p –default-character-set=latin1 –set-charset=gbk –skip-opt database_name > outfile_name.sql
    5.     数据库的导入
    用 mysqldump 备份出来的文件是一个可以直接倒入的 SQL 脚本,有两种方法可以将数据导入。
    mysql -u root -p *****  myblog  < myblog.sql
    这种方法,我以前经常现在很少用了,因为很容易产生乱码,因为:导出数据库时,你如果忘了设置导出字符集的话,在导入的时候,就有可能会出问题.假如,你导出时设置导出时设置了utf8的编码,但是你又把你的数据库现在的字符集改成了gb2312的.这样又会乱码。
    用 source 语句
    use myblog;
    set names utf8;  #这里的字符集根你的将要导入的数据库的字符集一至。
    source myblog.sql;
    6.     查看导出的sql文件的编码
    file base_user.sql
    7.     转成要用的编码
    iconv -f utf-8 -t gbk base_user.sql >base_user_gbk.sql
    8.     连接数据库并查看当前库的编码
    status;
    9.     设置成需要的编码
    set names 'gbk';
    10.     通过拷贝frm myd myi opt实现mysql的备份和还原
    frm myd myi opt的解释
    .frm保存的是描述了表的结构
    .MYD保存的是表的数据记录
    .MYI保存的是表的索引
    .opt保存的是数据库的字符集
    ls |grep opt | xargs catdefault-character-set=utf8default-collation=utf8_general_ci
    备份数据库
    创建一个数据库,create database test;这个时候去data目录下面看看,会产生一个test文件夹,里面只有一个db.opt文件,然后你在创建一些表,添加一些数据后,你在去data/test下面看看,里面多了一些.frm,.myd的文件。
    tar czvf /home/databak/test.tar.gz /usr/local/mysq/data/test
    这样就备份好了。
    还原数据库
    进入test数据库
    use test;
    show tables;
    在这儿你会看到,你新增加的表。
    删除data/test目录下面的frm,myd,myi这三种类型的文件
    use test;
    show tables;
    这个时候,一张表都没有。
    还原表
    tar zxvf /home/databak/test.tar.gz -C /usr/local/mysq/data
    在查看test的表
    use test;
    show tables;
    这个时候,新增加的表又出来了。
    如果是直接把data下面的test目录删除掉的话,就重新create database test;会产生一个新的test目录,然后在把备份的数据,还原过来就行了。个人觉得这种备份比较好,导出,导入比较麻烦,不用记得备份命令,只要会copy就行了。在不改变数据库配置的前提下,这种备份,还原基本上不会出现乱码的。
    二、     添加用户并授权
    添加任何机器都能登录的用户
    GRANT ALL PRIVILEGES ON dbName.* TO test@”%” identified by “1111”;
    %:代表所有的机器   也可以单独指定某个允许的客户端机器
    GRANT ALL PRIVILEGES ON *.* TO ‘bae’@'%’ IDENTIFIED BY ’1111′ with grant option; 有授权权限
    添加172.16.184.233机器登录的用户
    GRANT ALL ON dbName.* TO test@172.16.184.233 IDENTIFIEDBY “1111”;
    添加 一个用户 授 增 删 改 查 的权限。
    GRANT SELECT,INSERT,DELETE,UPDATE ON dbName.* TO test@% IDENTIFIEDBY “1111”;
    三、     mysql定时备份
    shell脚本
    vi /home/zhangy/database_bak.sh  
    #!/bin/sh  
    # File: /home/zhangy/database_bak.sh  
    # Database info bakupmysql  TANK 2009/11/04  
    DB_USER="root"  #用户名  
    DB_PASS="********" #密码  
    DB_NAME="myblog" #要备份的数据名  
    <SPAN id=more-161></SPAN># Others vars  
    DATE=`date +%Y_%m_%d`                                            #要备份的日期   
    YESTERDAY=`date -d yesterday +%Y_%m_%d`    #删除昨天的备份  
    BIN_DIR="/usr/local/mysql/bin" 
    BCK_DIR="/home/zhangy/database_bak"        #备份路径      
    cd $BCK_DIR 
    #删除以前该数据库的备份
    if [ -f $YESTERDAY$DB_NAME".sql" ]  
    then  
    rm -f $YESTERDAY$DB_NAME".sql" 
    fi  
    # 备份  
    ${BIN_DIR}/mysqldump --opt -u${DB_USER} -p${DB_PASS} ${DB_NAME} > ${BCK_DIR}/${DATE}${DB_NAME}.sql 
    定期执行
    把shell放到crontab里面。
    #查看crond是否已启动
    [root@BlackGhost cron]# ps -e|grep crond
    21519 ?        00:00:00 crond
    #打开crontab
    [root@BlackGhost cron]# crontab –e
    #在里面加上一行
    00 18 * * * /home/zhangy/database_bak.sh
    #查看一下是否已加上
    [root@BlackGhost cron]# crontab –l
    四、     Mysql卸载与安装
    卸载
    查找已安装的myslq 版本:
    #rpm  -qa | grep  mysql (注意大小写,如果mysql 不行就换MySQL)
    在屏幕上将显示已安装的mysql包名如:mysql-5.0.22-2.1.0.1 ;
    将搜索出的包名卸载:
    #rpm -e  --nodeps mysql-5.0.22-2.1.0.1 (nodeps表示强制删除)
    安装
    安装mysql
    yum install mysql
    安装mysql服务器
    yum install mysql-server
    五、     mysql出错列表
    1005:创建表失败
    1006:创建数据库失败
    1007:数据库已存在,创建数据库失败
    1008:数据库不存在,删除数据库失败
    1009:不能删除数据库文件导致删除数据库失败
    1010:不能删除数据目录导致删除数据库失败
    1011:删除数据库文件失败
    1012:不能读取系统表中的记录
    1020:记录已被其他用户修改
    1021:硬盘剩余空间不足,请加大硬盘可用空间
    1022:关键字重复,更改记录失败
    1023:关闭时发生错误
    1024:读文件错误
    1025:更改名字时发生错误
    1026:写文件错误
    1032:记录不存在
    1036:数据表是只读的,不能对它进行修改
    1037:系统内存不足,请重启数据库或重启服务器
    1038:用于排序的内存不足,请增大排序缓冲区
    1040:已到达数据库的最大连接数,请加大数据库可用连接数
    1041:系统内存不足
    1042:无效的主机名
    1043:无效连接
    1044:当前用户没有访问数据库的权限
    1045:不能连接数据库,用户名或密码错误
    1048:字段不能为空
    1049:数据库不存在
    1050:数据表已存在
    1051:数据表不存在
    1054:字段不存在 (SQLSTATE: 42S22 )
    1065:无效的SQL语句,SQL语句为空
    1081:不能建立Socket连接
    1114:数据表已满,不能容纳任何记录
    1116:打开的数据表太多
    1129:数据库出现异常,请重启数据库
    1130:连接数据库失败,没有连接数据库的权限
    1133:数据库用户不存在
    1141:当前用户无权访问数据库
    1142:当前用户无权访问数据表
    1143:当前用户无权访问数据表中的字段
    1146:数据表不存在
    1147:未定义用户对数据表的访问权限
    1149:SQL语句语法错误
    1158:网络错误,出现读错误,请检查网络连接状况
    1159:网络错误,读超时,请检查网络连接状况
    1160:网络错误,出现写错误,请检查网络连接状况
    1161:网络错误,写超时,请检查网络连接状况
    1062:字段值重复,入库失败
    1064:语法错误,常见的比如注释-- 后没加空格
    1169:字段值重复,更新记录失败
    1177:打开数据表失败
    1180:提交事务失败
    1181:回滚事务失败
    1193:变量没声明,常在写存储过程时发生
    1203:当前用户和数据库建立的连接已到达数据库的最大连接数,请增大可用的数据库连接数或重启数据库
    1205:加锁超时
    1211:当前用户没有创建用户的权限
    1216:外键约束检查失败,更新子表记录失败
    1217:外键约束检查失败,删除或修改主表记录失败
    1226:当前用户使用的资源已超过所允许的资源,请重启数据库或重启服务器
    1227:权限不足,您无权进行此操作

    1235:MySQL版本过低,不具有本功能

  • 相关阅读:
    XHR——XMLHttpRequest对象
    原生JS弹出层详解,从简单到复杂
    php面向对象(OOP)编程完全教程
    css hack
    Ajax+php 详细分析 (没完整)
    Zend Studio 12 生成 WSDL
    PHP WebService/Soap接口生成方法。
    php soap客户端调试实例及调试
    简单数据结构之栈模拟
    经典算法之约瑟夫问题
  • 原文地址:https://www.cnblogs.com/yzycoder/p/6731855.html
Copyright © 2011-2022 走看看