标签: MySQL

  • 实现MySQL数据库备份和恢复导入 图文教程

    实现MySQL数据库备份和恢复导入 图文教程

    我们一般在备份数据库的时候,如果数据库体积比较小,直接用phpMyadmin工具备份一点问题都没有,同理如果数据比较小直接导入用这个也是可以的。但是如果数据库比较大的话,就不容易这样操作,会导致备份和恢复不全。那我们还是需要学点备份大数据库的办法。

    在这里,WordPress采集插件简单的记录常用的MySQL数据库备份和恢复还原的办法,不要说这些命令看不懂也不会,你要有这么大数据库的时候必须要学会的,否则还真没办法混。

    第一、命令备份数据库

    1、备份单站点数据库

    如果我们备份单个网站数据库的时候可以用到指定数据库名的办法。

    mysqldump -u数据库用户名 -p数据库密码 数据库名 > database_name.sql

    2、多个数据库备份

    mysqldump –databases database_onedatabase_two > two_databases.sql

    在上面的代码中,database_one是要备份的第一个数据库的名称,database_two是第二个的名称。

    3、备份所有数据库

    mysqldump –all-databases > all_databases.sql

    第二、恢复数据库

    mysql -u数据库用户名 -p数据库密码 数据库名 < 数据库文件名.sql

    我们需要针对某个数据库对应恢复。

  • mysql远程连接/访问速度慢的解决方案

    mysql远程连接/访问速度慢的解决方案

    问题描述

    在连接内网mysql服务器上的数据库(mysql5.7 解决无法远程连接的方法),速度很慢。账户密码正确,已关闭防火墙。

    解决办法

    修改 /etc/my.cnf ,添加配置skip-name-resolve

    [mysqld]
    skip-name-resolve

     在连接远程数据库的时候,直接跳过MySQL的DNS解析

    重启mysqld服务,解决。

  • Windows10 Docker Mariadb InnoDB: Write to file ./ibdata1 failed

    Windows10 Docker Mariadb InnoDB: Write to file ./ibdata1 failed

    错误描述

    通过容器日志查到错误信息如下:

    2020-01-05 13:06:14 0 [Warning] InnoDB: Retry attempts for writing partial data failed.

    2020-01-05 13:06:14 0 [ERROR] InnoDB: Write to file ./ibdata1 failed at offset 0, 1048576 bytes should have been written, only 0 were written. Operating system error number 22. Check that your OS and file system support files of this size. Check also that the disk is not full or a disk quota exceeded.

    2020-01-05 13:06:14 0 [ERROR] InnoDB: Error number 22 means ‘Invalid argument’

    2020-01-05 13:06:14 0 [ERROR] InnoDB: Could not set the file size of ‘./ibdata1’. Probably out of disk space

    2020-01-05 13:06:14 0 [ERROR] InnoDB: Database creation was aborted with error Generic error. You may need to delete the ibdata1 file before trying to start up again.

    2020-01-05 13:06:15 0 [ERROR] Plugin ‘InnoDB’ init function returned error.

    2020-01-05 13:06:15 0 [ERROR] Plugin ‘InnoDB’ registration as a STORAGE ENGINE failed.

    2020-01-05 13:06:15 0 [ERROR] Unknown/unsupported storage engine: InnoDB

    2020-01-05 13:06:15 0 [ERROR] Aborting

    windows10 + Docker 安装 mariadb 时,一安装老是出现以上错误。创建命令如下:

    docker run -d -p 3307 --name jmysql -v D:\MysqlData\:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=jjjjjj mariadb

    解决办法

    使用以下命令进行创建

    docker run -d -p 3307:3306 --name jmysql -v D:\MysqlData\:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=jjjjjj mariadb --innodb-flush-method=fsync

    创建时需要添加:

    –innodb-flush-method=fsync

    注:重新创建时需要将 d:\MysqlData 目录清空并重新建立容器。

  • Python django migrate 和makemigrations的实际应用举例

    Python django migrate 和makemigrations的实际应用举例

    测试环境中生成迁移

    在你改动了 model.py的内容之后执行下面的命令:

    python manager.py makemigrations

    相当于 在该app下建立 migrations目录,并记录下你所有的关于modes.py的改动,比如0001_initial.py,

     但是这个改动还没有作用到数据库文件

    你可以手动打开这个文件,看看里面是什么

    生产环境中生成执行迁移

    python manager.py migrate

    将该改动作用到数据库文件,比如产生table之类

  • Python机房流量调度系统 环境配置

    Python机房流量调度系统 环境配置

    前面我们写了Python3 机房间流量调度系统,下面我们记录一下安装环境配置。

    升级Linux系统下的Python版本

    CentOS上安装配置Python3.7 编译安装图文教程

    安装docker

    yum install docker git screen -y
    systemctl start docker.service
    mkdir -p /data/mysqlData

    配置docker mysql

    docker run -d -p 3307:3306 -v /data/mysqlData/:/var/lib/mysql --privileged=true --name jmysql -e MYSQL_ROOT_PASSWORD='laoji.org' mysql 

    进入mysql容器,配置mysql密码

    docker exec -it jmysql /bin/bash
    mysql -uroot -p
    use mysql;
    alter user 'root'@'%' identified with mysql_native_password by 'laoji.org';
    \q
    exit 

    后面导入数据等不再详细说明。

  • Django数据库分表代码实例

    Django数据库分表代码实例

    app名称为‘core’,基本的models.py文件内容如下:

    class Province(models.Model):
        name = models.CharField(u'省份名称',max_length=32)
        code = models.IntegerField(verbose_name=u'区号', unique=True)
        
        def __unicode__(self):
            return self.name
        
        class Meta:
            verbose_name = u'省份列表'
            verbose_name_plural = u'省份列表'

    法I:

    重构 manager 中的 get_query_set() 方法。

    需要说明的是:在 django 默认情况下,会为每一个models 类添加一个名为 objects 的 Manager,这个就是 Province.objects.all() 中 objects 的由来。

    修改后的 models.py 代码如下,表结构必须一致:

    # coding:utf-8
    from django.db import models
    # Create your models here.
    class ProvinceManager(models.Manager):
        def get_queryset(self):
    #         return super(ProvinceManager, self).get_queryset().filter(id=1)
            self.model._meta.db_table = 'core_province_1' # 我的app名为core
            return super(ProvinceManager, self).get_queryset()10         11     
    class Province(models.Model):
        name = models.CharField(u'省份名称',max_length=32)
        code = models.IntegerField(verbose_name=u'区号', unique=True)
        
        objects = ProvinceManager()
        
        def __unicode__(self):
            return self.name
        
        class Meta:
            verbose_name = u'省份列表'
            verbose_name_plural = u'省份列表'

    可以多写几个 Manager 来对应不同的表,同时对应多写几个不同的 objects(可以随意起名),在调用时调用相应的 Manager。

    法II:

    在哪里调用就在哪里更改。更改处添加代码如下:

    from core.models import Province
    Province._meta.db_table = 'core_prvoince_2'
    rows = Province.objects.all() 

    总结:

    不论哪种方法,其主要还是要更改 models 的 _meta.db_table 的值

  • MySQL int类型 最大值范围 关于mysql 使用int类型出现 1264 Out of range value for column 错误的解决办法

    MySQL int类型 最大值范围 关于mysql 使用int类型出现 1264 Out of range value for column 错误的解决办法

    关于mysql 出现 1264 Out of range value for column , 首先我们了解一下MySQL中int类型的基础知识。

    字节

    我们都知道计算机是以二进制为基础。存储的基本单位是 Bit,也称为比特、二进制位。1bit 可以表示 0 或者 1 两个数字,是可能存在的最小的信息量,任何小于1 bit 的内容都算不上信息。

    复杂的内容就要用多 bit 来表示。Byte ,也称为字节,通常用作计量单位。1 byte 等于 8 bit,即 1 byte 可以表示 28 内容。

    MySQL 中的字节

    先说明一下,在 MySQL 中的整数类型,可以分为 unsigned 和 signed 两种,即无符号和有符号,具体内容这里不展开。tinyint 的大小就是 1 byte,在 signed 类型能表示的数字以下表为例。(注:表格根据《编码》修改,仅做举例说明,不代表 MySQL 实际存储)

    二进制数十进制数
    10000000-128
    10000001-127
    10000010-126
    10000011-125
    ……
    11111101-3
    11111110-2
    11111111-1
    000000000
    000000011
    000000102
    ……
    011111100124
    011111101125
    011111110126
    011111111127

    int 最大值

    在上表中我们看到,首位的 bit 用来表示符号,因此在 sigend 是少一位 bit 来存储内容。int 是 4 byte,结合上述,可以得出 int 在 signed 最大值为

    2**31−1=2147483647

    在 unsigned 中,无需首位 bit 表示符号,因此为

    2**32−1=4294967295

    解决办法

    此时可能是数据值超出了范围,我们可能需要将 int 类型 改成 bigint .

  • Linux下关闭 MySQL 的binlog日志功能 图文教程

    Linux下关闭 MySQL 的binlog日志功能 图文教程

    LNMP一键安装包安装的MySQL默认是开启了日志文件的,如果数据操作比较频繁就会产生大量的日志,在/usr/local/mysql /var/下面产生mysql-bin.0000* 类似的文件,而且一般都在几十MB到几个GB,更甚会吃掉整个硬盘空间,从来导致mysql无法启动或报错,下面我们来说一说如何关闭MySQL的日志功能?

    删除日志 

    /usr/local/mysql/bin/mysql -u root -p
    reset master;

    修改/etc/my.cnf 文件

    log-bin=mysql-bin 
    binlog_format=mixed   

    这两行前面加上#,将其注释掉。

    重启mysql数据库

    /etc/init.d/mysql restart

    本文以LNMP一件安装包安装的环境为例 除MySQL重启命令和配置文件路径可能略有不同,其他一样。

  • Mysql查询某字段值重复的数据

    Mysql查询某字段值重复的数据

    查询user表中,user_name字段值重复的数据及重复次数

    select user_name,count(*) as count from user group by user_name having count>1;

  • Python3 if 变量variable SQL where 语句拼接

    Python3 if 变量variable SQL where 语句拼接

    最近在写python3的项目,在实际中运用到了根据 if 判断变量variable ,然后去拼接where子句。但是在百度、BING搜索中未找到合适的答案,这是自己想出来的典型php写法,这里做一下记录。不知道在python中如何做,如有python大神知道,请指点一下。

    def getRooms( excludeId = None , limit = None ):
        sql = 'SELECT * from computer_room WHERE 1=1 '
        param = []
        if excludeId :
            sql += 'AND id <> %s '
            param += [excludeId]
        sql += 'ORDER BY weights ASC , id DESC '
        if limit :
            sql += 'LIMIT %s '
            param += [limit]
        config.cursor.execute( sql , param )
        return config.cursor.fetchall()
  • Kubernetes WEB UI Dashboard 部署 MySQL/Mariadb容器

    Kubernetes WEB UI Dashboard 部署 MySQL/Mariadb容器

    问题描述

    我们在使用Kubernetes的Dashboard部署mysql/mariadb时出现了错误(Docker Desktop for Mac/Windows开启Kubernetes 及安装注意事项):Back-off restarting failed container 错误 。

    这个错误主要是由于MySQL部署时需要设置 MYSQL_ROOT_PASSWORD 参数,但是我们这里不是时没有设置。

    Docker安装Mariadb数据库 设置root密码 图文教程

    解决方案

    在”显示高级选项”里可以找到”环境变量”设置,这里做好配置然后部署即可。

  • Docker容器中使用问题:Failed to get D-Bus connection: Operation not permitted 解决办法 图文教程

    Docker容器中使用问题:Failed to get D-Bus connection: Operation not permitted 解决办法 图文教程

    问题描述

    在CentOS7 中,docker 容器中 yum 安装完mysql后,启动mysqld报错

    systemctl start mysqld

    Failed to get D-Bus connection: Operation not permitted

    解决办法

    生成容器:

    docker run -itd -name mysql   mysql-yum-install /usr/sbin/init

    进入容器:

    docker exec -it mysql /bin/bash

    这样可以使用systemctl启动服务了。

    创建容器时正确代码

    docker run -itd --name mysql  mysql-yum-install  /usr/sbin/init

    进入容器

    docker exec -it mysql /bin/bash

    重启服务

    systemctl start mariadb
WeChat
↑