mysql复制:在主数据库中,前端用户每执行一个写操作/语句,都会在二进制日志中保存一个事件,把这个事件从mysql的服务器中3306端口发送给从服务器,从服务器把这个事件接受下来,接受下来先保存在本地的中继日志文件中,而后,他再从中继日志文件中读一个事件,执行一下,然后这个操作的结果保存在存储设备中。

中继日志(relay  log):接受主数据库服务器上传过来的数据,然后在执行一遍!

半同步:在一主多从的架构中,主数据库服务器将数据同步发送给另外一个节点,但是只保证至少一个节点同步完成,其他几个节点不能保证。

从服务器不能执行写操作,若执行了写操作,将导致与主服务器之间数据不一致!

多级复制:一个从服务器A可以在主服务器上拷贝数据,那从服务器B可以在从服务器A上复制数据。这个时候,从服务器A就需要用到二进制日志文件。

从服务器优点:分摊负载(负载均衡)               从服务器可以做备份,可以做冷备份,但是二进制文件要在主服务器上备份!

若主服务器崩溃,那么从服务器可以立即顶替上主服务器,代替主服务器的位置,但需要做一些修复。

异地容灾

负载均衡:主从模型,读可以在从服务器上读,写在主服务器上写!

双主模型,无法实现负载均衡,无法减轻写操作!

mysql5.5异步配置

注意对于mysql服务器来讲,一个主服务器可以带有多个从服务器,但是一个从服务器不可以有多个主服务器!

从mysql5.6开始引入了新机制: gtid全局事务号,使得mysql复制更加安全。

多线程复制

show  slave  status\G;    查看从服务器状态

一、主服务器(master)如何配置?

1、启用二进制日志  log-bin-index

2、选择一个唯一的server -id

3、创建具有复制权限的用户(RELICATION  SLAVE复制权限,RELICATION  CLIENT具有连接主服务器,获取相关信息的权限)

二、从服务器(slave)如何配置

1、启用中继日志(relay-log)

2、选择一个唯一的server-id

3、连接至主服务器并开始复制数据

mysql命令行下执行

changer   master   to       master_host= "  " ,master_port= "  "     ,master_log_file="  " ,   master_log_pos=    ,master_user=" " ,master_password="  "

设定主服务器是什么    主服务器在哪里     主服务器的端口号  主服务器的二进制文件

主配置

先关防火墙

1,启用二进制日志:/etc/my.cnf开启这一项(log-bin=mysql-bin),并添加一行log-bin-index=master-bin.index

开启这一项binlog_format=mixed

添加一项:innodb_file_per_table = 1

2,启动服务并建立用户账号

grant  位的随机符。

GTID:它是由服务器的UUID并结合事务ID号来组合成的来表示唯一某一个事务的标识码!

在mysql5.6的binary  log当中,在每一个事务的首部都会写上这个GTID的标识!

在我们的二进制日志文件当中,某一个事务相关的语句记录下来的时候,在这个事件首部会把它相关联的GTID给他记录下来!

mysql5.6的多线程复制

每个数据库仅能使用一个线程,复制涉及到多个数据库时多线程复制才意义!

slave-parallel-workers=线程数(尽可能等于数据库数,或者小于他,0代表禁用多线程复制)

mysql 提供了许多专门用于复制的管理工具,这些工具依赖于Python2.7及以上(不适用于红帽5)

跟复制、检查、显示、HA相关的命令!

工具下载地址:https://launchpad.net/mysql-utilities

mysqlreplicate :复制的工具,实现快速启动mysql的从服务器上,能够帮助mysql服务器检查已经在本地执行了的事务。

mysqlrplcheck :检查工具,实现验证我们的部署,并实现快速故障修复,

实现显示binlog相关配置异常,

mysqlfailover:故障转移工具,能够快速的让你自动或者手动提升一个从服务器为主服务器。

mysqlrplshow :显示工具,发现并显示复制拓扑图,显示主机名和端口号

mysqlrpladmin:管理工具, 手动让一个从服务器上线或者下线。

配置步骤

1.1、主服务器上的主配置文件:

datadir=/mydata/data

log-bin = master-bin

server-id = 1

socket = /tmp/mysql.sock

binlog-format=ROW

log-slave-updates=true

gtid-mode=on

enforce-gtid-consistency=true

master-info-repository=TABLE

relay-log-info-repository=TABLE

sync-master-info=1

slave-parallel-workers=2

binlog-checksum=CRC32

master-verify-checksum=1

slave-sql-verify-checksum=1

binlog-rows-query-log_events=1

report-port=3306

port=3306

report-host=192.168.1.1    重启服务!

1.2、登录mysql,查看GTID :show global variables  like '%gtid%';  ON为启动

2.1、配置从服务器主配置文件

datadir=/mydata/data

log-bin = master-bin

server-id = 2

socket = /tmp/mysql.sock

binlog-format=ROW

log-slave-updates=true

gtid-mode=on

enforce-gtid-consistency=true

master-info-repository=TABLE

relay-log-info-repository=TABLE

sync-master-info=1

slave-parallel-workers=2

binlog-checksum=CRC32

master-verify-checksum=1

slave-sql-verify-checksum=1

binlog-rows-query-log_events=1

report-port=3306

port=3306

report-host=主服务器IP地址

二进制日志文件启不启动看你是否高可用性(主服务器挂了,从服务立马顶上去)

重启服务!

3.1、在主服务器上创建用户:grant replication  slave on *.*  to  "repluser"@'从服务器IP地址' identified by 'replpass';

然后刷新授权表:flush privileges;

3.2、让从服务器连接主服务器:change master  to  master_host='192.168.1.1',master_user='repluser',master_password='replpass',master_log_file='master-bin.000',master_log-pos=456;

4.1、查看从服务器的状态:show  slave  status\G;查看复制功能是否运行?

Slave_IO_Running: No

Slave_SQL_Running: No

4.2、启动两个从服务器:start  slave ;

现在基于GTID的主从复制已经完成,

可以在主服务器上查看从服务器的信息:show  slave  hosts;

mysql5.6的读写分离

两种方式安装:yum   编译

安装配置mysql-proxy:

1、下载所需要的版本,这里的系统平台为rhel6.4 32位系统,因此就以mysql-proxy-0.8.3-linux-glibc2.3-x86-32bit.tar.gz为例。

# tar xf mysql-proxy-0.8.3-linux-glibc2.3-x86-32bit.tar.gz -C /usr/local

# cd /usr/local

# ln -sv mysql-proxy-0.8.3-linux-glibc2.3-x86-32bit  mysql-proxy

1.1、环境:yum -y install libevent glib2 lua

2、添加代理用户

# useradd mysql-proxy

2.1、给mysql-proxy添加启动脚本:

为mysql-proxy提供SysV服务脚本,内容如下所示

#!/bin/bash

#

# mysql-proxy This script starts and stops the mysql-proxy daemon

#

# chkconfig: - 78 30

# processname: mysql-proxy

# description: mysql-proxy is a proxy daemon for mysql

# Source function library.

. /etc/rc.d/init.d/functions

prog="/usr/local/mysql-proxy/bin/mysql-proxy"

# Source networking configuration.

if [ -f /etc/sysconfig/network ]; then

. /etc/sysconfig/network

fi

# Check that networking is up.

[ ${NETWORKING} = "no" ] && exit 0

# Set default mysql-proxy configuration.

ADMIN_USER="admin"

ADMIN_PASSWD="admin"

ADMIN_LUA_SCRIPT="/usr/local/mysql-proxy/share/doc/mysql-proxy/admin.lua"

PROXY_OPTIONS="--daemon"

PROXY_PID=/var/run/mysql-proxy.pid

PROXY_USER="mysql-proxy"

# Source mysql-proxy configuration.

if [ -f /etc/sysconfig/mysql-proxy ]; then

. /etc/sysconfig/mysql-proxy

fi

RETVAL=0

start() {

echo -n $"Starting $prog: "

daemon $prog $PROXY_OPTIONS --pid-file=$PROXY_PID --proxy-address="$PROXY_ADDRESS" --user=$PROXY_USER --admin-username="$ADMIN_USER" --admin-lua-script="$ADMIN_LUA_SCRIPT" --admin-password="$ADMIN_PASSWORD"

RETVAL=$?

echo

if [ $RETVAL -eq 0 ]; then

touch /var/lock/subsys/mysql-proxy

fi

}

stop() {

echo -n $"Stopping $prog: "

killproc -p $PROXY_PID -d 3 $prog

RETVAL=$?

echo

if [ $RETVAL -eq 0 ]; then

rm -f /var/lock/subsys/mysql-proxy

rm -f $PROXY_PID

fi

}

# See how we were called.

case "$1" in

start)

start

;;

stop)

stop

;;

restart)

stop

start

;;

condrestart|try-restart)

if status -p $PROXY_PIDFILE $prog >&/dev/null; then

stop

start

fi

;;

status)

status -p $PROXY_PID $prog

;;

*)

echo "Usage: $0 {start|stop|restart|reload|status|condrestart|try-restart}"

RETVAL=1

;;

esac

exit $RETVAL

将上述内容保存为/etc/rc.d/init.d/mysql-proxy,给予执行权限,而后加入到服务列表。

# chmod +x /etc/rc.d/init.d/mysql-proxy

# chkconfig --add mysql-proxy

3、为服务脚本提供配置文件/etc/sysconfig/mysql-proxy,内容如下所示:

# Options for mysql-proxy

ADMIN_USER="admin"

ADMIN_PASSWORD="admin"

ADMIN_ADDRESS=""

ADMIN_LUA_SCRIPT="/usr/local/mysql-proxy/share/doc/mysql-proxy/admin.lua"

PROXY_ADDRESS=""

PROXY_USER="mysql-proxy"

PROXY_OPTIONS="--daemon --log-level=info --log-use-syslog  --plugins=proxy --plugins=admin  --proxy-backend-addresses=192.168.2.128:3306 --proxy-read-only-backend-addresses=192.168.2.141:3306  --proxy-lua-script=/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua"

其中最后一行,需要按实际场景进行修改,例如:

PROXY_OPTIONS="--daemon --log-level=info --log-use-syslog --plugins=proxy --plugins=admin --proxy-backend-addresses=172.16.100.6:3306 --proxy-read-only-backend-addresses=172.16.100.7:3306 --proxy-lua-script=/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua"

其中的proxy-backend-addresses选项和proxy-read-only-backend-addresses选项均可重复使用多次,以实现指定多个读写服务器或只读服务器。

mysql-proxy的配置选项大致可分为帮助选项、管理选项、代理选项及应用程序选项几类,下面一起去介绍它们。

--help

--help-admin

--help-proxy

--help-all ———— 以上四个选项均用于获取帮助信息;

--proxy-address=host:port ———— 代理服务监听的地址和端口;

--admin-address=host:port ———— 管理模块监听的地址和端口;

--proxy-backend-addresses=host:port ———— 后端mysql服务器的地址和端口;

--proxy-read-only-backend-addresses=host:port ———— 后端只读mysql服务器的地址和端口;

--proxy-lua-script=file_name ———— 完成mysql代理功能的Lua脚本;

--daemon ———— 以守护进程模式启动mysql-proxy;

--keepalive ———— 在mysql-proxy崩溃时尝试重启之;

--log-file=/path/to/log_file_name ———— 日志文件名称;

--log-level=level ———— 日志级别;

--log-use-syslog ———— 基于syslog记录日志;

--plugins=plugin,.. ———— 在mysql-proxy启动时加载的插件;

--user=user_name ———— 运行mysql-proxy进程的用户;

--defaults-file=/path/to/conf_file_name ———— 默认使用的配置文件路径;其配置段使用[mysql-proxy]标识;

--proxy-skip-profiling ———— 禁用profile;

--pid-file=/path/to/pid_file_name ———— 进程文件名;

4、创建:/usr/local/mysql-proxy/share/doc/mysql-proxy目录下创建admin.lua

脚本内容 如下:

function set_error(errmsg)

proxy.response = {

type = proxy.MYSQLD_PACKET_ERR,

errmsg = errmsg or "error"

}

end

function read_query(packet)

if packet:byte() ~= proxy.COM_QUERY then

set_error("[admin] we only handle text-based queries (COM_QUERY)")

return proxy.PROXY_SEND_RESULT

end

local query = packet:sub(2)

local rows = { }

local fields = { }

if query:lower() == "select * from backends" then

fields = {

{ name = "backend_ndx",

type = proxy.MYSQL_TYPE_LONG },

{ name = "address",

type = proxy.MYSQL_TYPE_STRING },

{ name = "state",

type = proxy.MYSQL_TYPE_STRING },

{ name = "type",

type = proxy.MYSQL_TYPE_STRING },

{ name = "uuid",

type = proxy.MYSQL_TYPE_STRING },

{ name = "connected_clients",

type = proxy.MYSQL_TYPE_LONG },

}

for i = 1, #proxy.global.backends do

local states = {

"unknown",

"up",

"down"

}

local types = {

"unknown",

"rw",

"ro"

}

local b = proxy.global.backends[i]

rows[#rows + 1] = {

i,

b.dst.name,          -- configured backend address

states[b.state + 1], -- the C-id is pushed down starting at 0

types[b.type + 1],   -- the C-id is pushed down starting at 0

b.uuid,              -- the MySQL Server's UUID if it is managed

b.connected_clients  -- currently connected clients

}

end

elseif query:lower() == "select * from help" then

fields = {

{ name = "command",

type = proxy.MYSQL_TYPE_STRING },

{ name = "description",

type = proxy.MYSQL_TYPE_STRING },

}

rows[#rows + 1] = { "SELECT * FROM help", "shows this help" }

rows[#rows + 1] = { "SELECT * FROM backends", "lists the backends and their state" }

else

set_error("use 'SELECT * FROM help' to see the supported commands")

return proxy.PROXY_SEND_RESULT

end

proxy.response = {

type = proxy.MYSQLD_PACKET_OK,

resultset = {

fields = fields,

rows = rows

}

}

return proxy.PROXY_SEND_RESULT

end

5、启动服务:

mysql5.6双主双从及其高可用集群(MMM)

两台主mysql互为主从,两台mysql从服务都备份一个主服务器,然后再使用mysql-mmm套件进行读写分离。

先配置双主互备

1、首先关掉防火墙,配置IP地址。

2、在mysql配置文件中写入主从配置所需要的选项(双节点都配置,除了server-id不同)

server-id = 1     //节点表示,全局唯一

log-bin=mysql-bin      //日志文件命名格式

relay-log = mysql-relay-bin   //relay-log日志文件的命名格式

replicate-wild-ignore-table=mysql.%      //复制过滤选项,过滤数据库mysql下的所有数据

replicate-wild-ignore-table=test.%

replicate-wild-ignore-table=information_schema.%

3、创建复制用户并授权(双节点都配置,除用户名和密码不一样,IP地址一定要用%,因为不能单指一台mysql服务器)

grant  replication  slave  on  *.*  to  'sun1'@'10.10.10.%'  identified by  'sun1021!';

4、在另一台mysql服务器中将这台mysql设为主服务器 !(master_log_file和master_log_pos这两个选项的值刚好是主服务器上的show master status查询的值!)

change master to \

-> master_host='10.10.10.118',

-> master_user='sun2',

-> master_password='sun1022!',

-> master_log_file='mysql-bin.000001',

-> master_log_pos=327;

5、启动slave服务器:start  slave;  然后使用show slave status\G;查看传输状态。

6、然后再把从服务器作为主,在从服务器上创建复制用户。然后再让主服务器连接,最后,开启复制服务,在查看一下复制状态。

然后配置双从

1、在两台剩余的mysql上都连接同一个主mysql服务器,必须是同一个主服务器!

2、都开启slave服务即可!

最后配置MMM

1、安装MMM套件(配置好centos的yum源)

安装服务器端:yum  -y  install  mysql-mmm*

每个mysql节点:yum  -y  install  mysql-mmm-agent

2、在所有mysql主机的配置文件中写入: read_only=1,这个参数可以对所有非临时表进行只读控制。

3、在所有mysql节点创建账号monitor user(对所有mysql服务器做健康检查),monitor agent(切换只读模式和同步Master信息)

创建monitor user:grant  replication client  on  *.*  to  'monitor'@'10.10.10.%'  identified  by  'nihao1!';

创建monitor agent:grant  super, replication client, process  on  *.*  to  'agent'@'10.10.10.%'  identified by 'nihao2!';

4、设置主配置文件(/etc/mysql-mmm/)

mmm_mon.conf :仅在MMM节点上配置,用于监控一些参数

mmm_common.conf :在所有的MMM节点配置,设置读写节点的IP地址和配置虚拟ip

mmm_agent.conf :在所有的mysql节点上配置,设置每个节点的标识

4.1、配置mmm_common.conf配置文件

active_master_role      writer  //设置这个参数时,所有mysql节点都应该设置read-only=1,

<host default>

cluster_interface       eth0     //配置的网络接口,不能指定子接口

pid_path                /var/run/mysql-mmm/mmm_agentd.pid     //设置pid文件位置

bin_path                /usr/libexec/mysql-mmm/            //指定MMM可执行文件路径

replication_user        replicant              //设置复制的用户名

replication_password    slave                //设置复制的密码

agent_user              mmm_agent        //设置更改只读操作的用户

agent_password          RepAgent          //设置更改只读操作用户的密码

</host>

<host db1>     //设置节点的配置信息,db1会在mmm_agent.conf文件中定义

ip      192.168.100.49       //设置db1的物理ip地址

mode    master             //设置db1的角色

peer    db2               //与db1对等的主机名,也就是db1和db2均为Master角色

</host>

<host db3>        //设置节点的配置信息,db3会在mmm_agent.conf文件中定义

ip      192.168.100.51     //设置db3的物理ip地址

mode    slave             //设置db3的角色

</host>

<role writer>           //设置可写角色模式

hosts   db1, db2      //设置可执行写操作的主机

ips     192.168.100.250    //设置可写的虚拟ip

mode    exclusive         //设置角色互斥,互斥角色只有一个ip,并且同一时间

</role>

<role reader>             //设置可写角色模式

hosts   db1, db2      //设置可执行写操作的主机

ips     192.168.100.251, 192.168.100.252     //设置可写的虚拟ip

mode    balanced    //设置角色为负载均衡,可以有多个IP地址,这些IP地址被均衡的动态的分配给多台mysql主机

</role>

4.2、配置mmm_agent.conf配置文件

this  db1    //指定了mysql节点对应的主机名

4.3、配置mmm_mon.conf配置文件

include mmm_common.conf

<monitor>

ip                  127.0.0.1   //为了安全性,设置只在本机监听,默认监听端口9988

pid_path            /var/run/mysql-mmm/mmm_mond.pid    //设置mmm_mond进程的PID文件位置

bin_path            /usr/libexec/mysql-mmm              //MMM可执行文件路径

status_path         /var/lib/mysql-mmm/mmm_mond.status      //MMM集群的状态文件

ping_ips            192.168.100.50          //用于测试网络可用性的IP地址列表,不要写入本机的IP地址

auto_set_online     60    //是否设置自动上线,

# The kill_host_bin does not exist by default, though the monito

r will

# throw a warning about it missing.  See the section 5.10 "Kill

Host

# Functionality" in the PDF documentation.

#

# kill_host_bin     /usr/libexec/mysql-mmm/monitor/kill_host

#

</monitor>

<host default>

monitor_user        mmm_monitor   //monitor账号

monitor_password    RepMonitor     //monitor密码

</host>

debug 0   //MMM管理端的运行模式,1为debug模式,0为正常运行

(注意:若没有PID文件,我们要手动创建:touch  /var/run/mysql-mmm/mmm_mond.pid)

5、配置mysql-mmm-agent文件,确保此文件在所有mysql节点都为ENABLED=1

6、所有的配置文件权限最好都为640

7、启动

MMM管理节点:/etc/init.d/mysql-mmm-monitor  start

mysql节点:/etc/init.d/mysql-mmm-agent   start

8、命令

mmm_control show  //查看群集运行状态

例:  db1(10.10.10.116)           master    /   ONLINE.       Roles: reader(10.10.10.13),     writer(10.10.10.11)

集群节点的物理IP地址    mysql角色    集群节点状态    集群中读写角色对应的虚拟IP地址(r:读,w:写)

集群节点状态:

ONLINE :节点运行正常,处于在线状态

ADMIN_OFFLINE :节点通过手动模式离线的

HARD_OFFLINE :节点处于离线状态, 一般由于MMM集群脚本执行ping操作失败或检测mysql失败而切换的一种状态

AWAITING_RECOVERY :表示等待恢复状态,如果MMM集群设置的是active运行模式,那么此状态将会自动恢复为ONLINE状态

REPLICATION_FAIL :表示主从复制失败状态,一般由于复制主线程没有运行导致的

REPLCATION_DELAY :表示复制日志有延时,一般由检查日志失败导致的

mmm_control mode   //查看MMM集群目前处于什么运行模式

模式类型:

active :表示主动模式,该模式是默认的,master节点故障另一个master顶上,继续服务。slave故障另一个slave节点顶上。

manual :表示手动模式,该模式不会执行自动切换操作,若某一节点故障,手动切换到其他节点。

passive :表示被动模式,在该模式下,MMM管理端不会改变集群中节点的角色,也不更新状态文件和发送任何信息给每个agent节点,在启动的节点发生冲突时,将会进入被动模式。

mmm_control checks all  //查看所有MMM集群节点的运行状态,会对每个节点执行四项检查,并确定检查是否成功。

四项检查含义:

ping :检测网络可用性

mysql :检测mysql服务器是否运行正常

rep_threads :检测mysql的复制线程是否正常运行

rep_backlog :检测mysql的复制日志是否有挤压

(在这四项检测中,任何一项出现问题,都对进行角色切换操作!)

9、读写分离测试

注意:登录的时候登录用mmm_control show列表中的主Master中能够写的虚拟IP地址!!!

例子:db1(10.10.10.116)           master    /   ONLINE.       Roles: reader(10.10.10.13),     writer(10.10.10.11)

使用这个虚拟IP登录

登录mysql服务器,向里面创建一个库或者表,然后查看其他节点有没有同步过去。

10、

mysql数据库之主从复制+双主--MMM的更多相关文章

  1. centos MySQL主从配置 ntsysv chkconfig setup命令 配置MySQL 主从 子shell MySQL备份 kill命令 pid文件 discuz!论坛数据库读写分离 双主搭建 mysql.history 第二十九节课

    centos  MySQL主从配置 ntsysv   chkconfig  setup命令  配置MySQL 主从 子shell  MySQL备份  kill命令  pid文件  discuz!论坛数 ...

  2. MySQL Replication, 主从和双主配置

    MySQL Replication, 主从和双主配置 MySQL的Replication是一种多个MySQL的数据库做主从同步的方案,特点是异步,广泛用在各种对MySQL有更高性能,更高可靠性要求的场 ...

  3. 美团点评MySQL数据库高可用架构从MMM到MHA+Zebra以及MHA+Proxy的演进

    本文介绍最近几年美团点评MySQL数据库高可用架构的演进过程,以及我们在开源技术基础上做的一些创新.同时,也和业界其它方案进行综合对比,了解业界在高可用方面的进展,和未来我们的一些规划和展望. MMM ...

  4. windows系统下使用mycat实现mysql数据库的主从复制,从而实现负载均衡

    在之前有记录过在一台系统中安装多台数据库,同时实现主从复制,但是那个主从复制只是一个基于dosc命令的,再实际的开发中我们不会去直接连接数据库,一般情况下我们也是通过间接的采用一些中间件去连接,本来是 ...

  5. MySQL数据库双机热备------主-主备份配置

    MySQL数据库双机热备------主-主备份配置 实验环境: 主1数据库 192.168.1.1 centos6.5 x86_64 +MySQL5.5.35 主2数据库192.168.1.2  Wi ...

  6. MySQL的主从复制+双主模式

    MySQL的主从复制 部署环境: MySQL master 192.168.40.21 MySQL slave  192.168.40.22 思路: 当主MySQL上进行数据上的操作或者变化时,主My ...

  7. Mysql数据库的主从与主主

    前言: 首先,我们得知道我们为什么要做数据库的主从与主主,而后,再讨论他们的优劣与特点:为什么要做主从呢?因为Mysql数据库没有增量备份的机制,当数据量太大的时候备份是个难以解决的问题.但是mysq ...

  8. mysql传统主从、双主复制+keepalived配置步骤

    mysql主从.主主复制(双主复制)配置步骤 一:MySQL复制: MySQL复制简介: 将master服务器中主数据库的ddl和dml操作通过二进制日志传到slaves服务器上,然后在master服 ...

  9. Mysql数据库的主从复制

    怎么安装mysql数据库,这里不说了,只说它的主从复制,步骤如下: 1.主从服务器分别作以下操作:  1.1.版本一致  1.2.初始化表,并在后台启动mysql  1.3.修改root的密码 2.修 ...

随机推荐

  1. Task异常捕获的几种方式

    在调用Task的Wait()方法或Result属性处会抛出Task中的异常. 但是如果没有返回结果,或者不想调用Wait()方法,该怎么获取异常呢? 可以使用ContinueWith()方法 var ...

  2. Linux学习笔记-第3天 - 勤能补拙

    学一门技术,基础一定要打牢,多练习是关键,还要尽可能理解其背后的知识.并时刻提醒自己,求知若饥,虚心若愚.

  3. CF888G XOR-MST 最小异或生成树

    CF888G XOR-MST 链接 CF888G 思路 trie上贪心,先左右两边连边,再用一条边的代价连起左右两颗树.因为内部的边一定比跨两棵树的边权笑,显然是对的. 代码自己瞎yy的.启发式合并 ...

  4. cf1182D Complete Mirror

    可以得到一个结论, 可行的点要么是直径端点, 要么是直径中点, 要么是直径中点引出的链中最短的端点 #include<cstdio> #include<algorithm> # ...

  5. log4j输出到控制台的性能问题

    一.背景 最近几个业务遇到服务假死的情况,通过排查,我们发现是因为业务在线上使用了日志框架的ConsoleAppender所致. 请尊重作者劳动成果,转载请标明原文链接:https://www.cnb ...

  6. python 获取日期以及时间

    >>> import datetime >>> >>> i = datetime.datetime.now() >>> prin ...

  7. mysql 类型自动化转换问题

    mysql 类型自动化转换问题 背景  有个业务需求,使用到find_in_set函数,简单贴下,如下: SELECT FIND_IN_SET('b','a,b,c,d'); //返回值为2,即第2个 ...

  8. Navicat的安装和pymysql模块的使用

    内容回顾 select distinct 字段1,字段2,... from 表名 where 分组之前的过滤条件 group by 分组条件 having 分组之后过滤条件 order by 排序字段 ...

  9. 用Java编程能给物联网(IoT)带来什么优势与不同?

    用Java编程能给物联网(IoT)带来什么优势与不同? 这是一个不太容易回答的问题,也是一个适合拿出来与大家讨论的一个话题~首先需要聊聊物联网硬件与嵌入式设备有什么不同.嵌入式设备通常是一个软件一体的 ...

  10. VS一个奇怪的发布问题

    同事的环境,发布项目时一直提示找不到某dll,在引用及bin里未发现黄色感叹号,后来发现问题是因为项目文件不小心包含了一个外部bin目录,并且该bin目录中的dll删除导致的.