mysql keepalived双主双活_mysql高可用架构方案之中的一个(keepalived+主主双活)

Mysql双主双活+keepalived实现高可用

文件夹

1、前言... 4

2、方案... 4

2.1、环境及软件... 4

2.2、IP规划... 4

2.3、架构图... 4

3、安装设置MYSQL半同步... 5

4、Keepalived实现MYSQL的高可用... 11

1、前言

近期研究了下高可用的东西,这里总结一下mysql主主双活的架构方案,总体上提高服务的高可用性。出现故障也不须要手动切换。提高总体的维护效率。

确定改造的话,仅仅须要让他们的程序中使用vip地址就能够,实现起来比較easy。

2、方案

本案例先使用两台linux做双机MASTER-MASTER高可用(兴许能够考虑增加仅仅读SLAVER,用于提高查询性能),採用MYSQL5.6.x的半同步实现数据复制和同步。使用keepalived来监控MYSQL和提供VIP及浮动。不论什么一台主机宕机都不会影响对外提供服务(vip能够浮动),保持服务的高可用。

注 keepalived之间使用vrrp组播方式通信使用的IP地址是192.168.150.201

2.1、环境及软件

操作系统:RedHat 5.5

Keepalived:keepalived-1.2.12.tar.gz

MYSQL:MySQL-server- mysql-5.0.77-4.el5_4.2.x86_64.rpm   MySQL-client- mysql-5.0.77-4.el5_4.2.x86_64.rpm

2.2、IP规划

名称

IP

备注

VIP

192.168.150.201

由KEEPALIVED产生的虚拟IP,也是前端client使用的IP

MYSQL_DB_MASTER1

192.168.150.145

数据库1server

MYSQL_DB_MASTER2

192.168.150.146

数据库2server

2.3、架构图

3、安装设置MYSQL半同步

3.1、安装MYSQL

这里选择的是使用社区版的MYSQL,请在www.mysql.com上下载相应操作系统的安装文件,这里依据官方的建议使用RPM包方式安装。也能够进行yum安装。

安装

假设是默认Redhat5.5安装后,

# 使用yum 安装 yum install mysql

yum install mysql-server

……

默认安装是在/usr以下。所以my.cnf是在/usr/my.cnf,这里为了习惯使用方法,复制到/etc/文件夹下

# mv /usr/my.cnf /etc/

标准方式改动password

# mysqladmin -u root -p oldPassword password

# New password:

# Confirm new password:

# mysqladmin -u root -p password newPassword

SQL直接更新方式改动password:

初始化rootpassword常见问题及处理

error: 'Access denied for user 'root'@'localhost' (usingpassword: NO)'

# /etc/init.d/mysql stop

# mysqld_safe --user=mysql --skip-grant-tables--skip-networking &

# mysql -u root mysql

mysql> UPDATE user SETPassword=PASSWORD('newpassword') where USER='root';

mysql> FLUSH PRIVILEGES;

mysql> quit

# /etc/init.d/mysql restart

# mysql -uroot -p

Enter password:

mysql>

设置网络訪问权限

MYSQL的用户訪问策略是须要指定用户从某IP能够訪问那些权限。

详细使用方法请參考grant命令。这里为了简单起见,直接设置root用户在整个局域内(192.168.150.*)都能够訪问数据库。

# mysql -uroot -p

******

mysql> GRANT ALL PRIVILEGES ON *.* TO root@'192.168.150.%' IDENTIFIEDBY 'password' WITH GRANT OPTION;

mysql>FLUSH PRIVILEGES;

这样设置后,就能够通过内网的其它机器訪问数据库了。

改动数据文件路径

mysql安装后。默认的数据存储路径在/var/lib/mysql下。

这里改动为/data/mysql

# service mysql stop

# mkdir /data/mysql

# cp -r /var/lib/mysql/* /data/mysql

# chown -R mysql:mysql /data/mysql

vi /etc/my.cnf

改动里面的參数

[mysqld]

datadir= /data/mysql

socket= /data/mysql/mysql.sock

# 顺便配置下MYSQL使用mysql用户启动

user=mysql

保存退出

为/data/mysql/mysql.sock建立指向/var/lib/mysql/mysql.sock的软连接

# ln -s /data/mysql/mysql.sock /var/lib/mysql/mysql.sock

启动MYSQL并測试

# service mysql start

# mysql -uroot -p

******

mysql>

最可能出现的问题(假设你是Redhat6.x或CentOS6.x):selinux 照成服务无法正常启动,报错:

Starting MySQL. ERROR! The server quit without updatingPID file (/data/mysql/xxxxx.pid).

验证问题方法:

# setenforce 0

# service mysql start

Starting MySQL. SUCCESS!

假设能正常启动,解决这个问题。就确定是selinux造成的问题了。

解决的方法:直接禁用

vim /etc/selinux/config

改动:SELINUX=disabled

保存后,重新启动操作系统生效

如 果出现故障,一般解决这个问题的方式是查看MYSQL的日志文件,一般提示会比較清楚,或者依据错误信息区GOOGLE都能够找到答案。日志文件:${datadir}/${hostname}.err, 本例中改动了数据文件夹。所以日志文件是:/data/mysql/acooly1.err

OK,本节安装MYSQL完毕,然后另外一台server的MYSQL安装全然同样(半同步的设置有小不同,那以下会说明)。请參照以上说明安装另外一台MYSQL服务(MYSQL_DB_MASTER2)。

3.2、设置MYSQL双向半同步

本方案中为了实现故障转移功能。在利用半同步复制能力的同一时候,对总体方案进行了调整例如以下:

1.  MYSQL_DB_MASTER1 和MYSQL_DB_MASTER2互为主备。即MYSQL_DB_MASTER1时MYSQL_DB_MASTER2的 主。MYSQL_DB_MASTER2是MYSQL_DB_MASTER1的主,通过半同步实现双向的同步复制(注意:这里不会出现冲突,由于备机仅仅会同步不是本机server_id的bin-log日志。通过两台机器的server_id隔离须要同步的bin-log)

2.  通过Keepalived实现MYSQLserver的监控和VIP的浮动,保证同一时间仅仅有一台MYSQLserver可用。

3.  该方案中,能够兼容后期的扩容,增加多台SALVE与两台MASTER异步同步实现数据的仅仅读查询,实现读写分离,提高总体性能。

配置/etc/my.cnf

分别改动/etc/my.cnf配置,打开bin-log功能和设置server_id

vi /etc/my.cnf

/etc/my.conf代码

[mysqld]

# MYSQL_DB_MASTER1设置为1。MYSQL_DB_MASTER2设置为2

server_id=1

log_bin=mysql-bin

安 装官方文档说明,主(MYSQL_DB_MASTER1)须要设置rpl_semi_sync_master_enabled=1和rpl_semi_sync_master_timeout=1000。备(MYSQL_DB_MASTER2)须要设置 rpl_semi_sync_slave_enabled=1,这里由于是双向同步。我都没有设置,经測试,没有设置也没有关系(临时没有深究,兴许在研究下)。

配置MYSQL_DB_MASTER1与MYSQL_DB_MASTER2的主备同步

在MYSQL_DB_MASTER1上操作配置MYSQL_DB_MASTER1为MYSQL_DB_MASTER2的主。

Mysql_db_master1代码

# mysql-uroot -p

Enterpassword:

......

-- 建立复制用户replication,同意内网内其它机器(訪问本机全部数据库)

mysql> grant replication  slave on *.* to'repdb01'@'192.168.150.%' identified by '123456';

QueryOK, 0 rows affected (0.00 sec)

-- 查看master的bin-log状态,用户设置SLAVE同步的起点

mysql>show master status;

+------------------+----------+--------------+------------------+-------------------+

| File             | Position | Binlog_Do_DB |Binlog_Ignore_DB | Executed_Gtid_Set |

+------------------+----------+--------------+------------------+-------------------+

| mysql-bin.000013 |      120 |              |                  |                   |

+------------------+----------+--------------+------------------+-------------------+

1 row in set (0.02 sec)

这里注意记录下当前bin-log文件名:mysql-bin.000013和位置:120。备机设置的时候须要用到。

在MYSQL_DB_MASTER2上操作配置

Mysql_db_master2代码

--设置SLAVE的MASTER和開始同步的文件位置

mysql>change master tomaster_host='192.168.150.145',master_user='repdb01',master_password='123456',master_log_file='mysql-bin.000003',master_log_pos=120;

--启动同步

mysql>start slave;

mysql>show slave status\G;

***************************1. row ***************************

Slave_IO_State: Waiting formaster to send event

Master_Host:192.168.150.145

Master_User: repdb01

Master_Port: 3306

Connect_Retry: 10

Master_Log_File:mysql-bin.000013

Read_Master_Log_Pos: 120

Relay_Log_File: acooly2-relay-bin.000020

Relay_Log_Pos: 283

Relay_Master_Log_File:mysql-bin.000013

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

……

1 row in set (0.02sec)

Slave_IO_Running: Yes和Slave_SQL_Running:Yes表示SLAVE已经正常启动并监听MASTER的数据发送事件。处理同步。

配置MYSQL_DB_MASTER2与MYSQL_DB_MASTER1的主备同步

全部配置操作与上一节,仅仅是把主备关系交换。

OK

假设全部的配置成功,启动MASTER1和MASTER2两个数据库,分别从两端创建数据库。表和更新表数据,另外一边都会实时同步。

也能够在两台机器中分别配置/etc/my.cnf

210.146

[root@rac2 keepalive]# cat /etc/my.cnf

[mysqld]

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

user=mysql

# Default to using old password format for compatibilitywith mysql 3.x

# clients (those using the mysqlclient10 compatibilitypackage).

old_passwords=1

# Disabling symbolic-links is recommended to preventassorted security risks;

# to do so, uncomment this line:

# symbolic-links=0

old_passwords=1

lower_case_table_names=1

default-character-set=utf8

default-storage-engine=innodb

max_connect_errors = 100000

#innodb_buffer_pool_size= 8G

max_connections = 500

default-character-set=utf8

server-id=2

#log-bin=mysqlbin

innodb_flush_log_at_trx_commit=1

sync_binlog=1

init_connect='SET NAMES utf8'

log-bin=mysqlbin

master-host=192.168.150.145

master-user=repdb01

master-pass=123456

master-connect-retry=60

replicate-do-db=db01

replicate-do-db=spring

master-port=3306

slave-net-timeout=60

[mysqld_safe]

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid

[client]

default-character-set=utf8

210.145 上面的配置

[root@rac1 ~]# cat /etc/my.cnf

[mysqld]

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

user=mysql

# Default to using old password format for compatibilitywith mysql 3.x

# clients (those using the mysqlclient10 compatibilitypackage).

old_passwords=1

# Disabling symbolic-links is recommended to preventassorted security risks;

# to do so, uncomment this line:

# symbolic-links=0

old_passwords=1

lower_case_table_names=1

default-character-set=utf8

default-storage-engine=innodb

max_connect_errors = 100000

#innodb_buffer_pool_size= 8G

max_connections = 500

default-character-set=utf8

#binlog_format=mixed

server-id=1

master-host=192.168.150.146

master-user=repdb01

master-pass=123456

master-connect-retry=60

replicate-do-db=db01

replicate-do-db=spring

init_connect='SET NAMES utf8'

log-bin=mysqlbin

[mysqld_safe]

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid

[client]

default-character-set=utf8

两个配置完毕后重新启动数据库,配置完毕。

4、Keepalived实现MYSQL的高可用

前面已经完毕MYSQL的双向实时同步的配置。本节使用Keepalived实现MYSQL双机的高可用,故障转移。通过VIP实现同一时候仅仅有一台MYSQL提供服务。

4.1、配置KEEPALIVED

两台MYSQLserver上的配置基本同样(除了keepalived.conf的个别配置外),详细操作配置例如以下:

设置keepalived的主配置文件/etc/keepalived/keepalived.conf实现本机的MYSQL的监控和VIP浮动。

安装keepalived

tar –zxvf keepalived-1.1.20.tar.gz

cd keepalived-1.1.20

./configure --prefix=/usr/local/keepalived/

make

make install

ln -s /usr/local/keepalived/etc/keepalived /etc/

ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived/etc/rc.d/init.d/

ln -s /usr/local/keepalived/etc/sysconfig/keepalived/etc/sysconfig/

ln -s /usr/local/keepalived/bin/genhash /bin/

ln -s /usr/local/keepalived/sbin/keepalived /sbin/

configure时注意Use IPVS Framework、IPVS sync daemon support 、Use VRRP Framework要返回yes。否则无法关联ipvs功能

master1 上的配置:

145

vi /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {

router_id Mysql-HA

}

# 定义MYSQL监控的脚本。每2秒监控一次,详细脚本请见以下

vrrp_scriptcheck_mysql {

script"/root/keepalive/keepalived_check_mysql.sh"

interval 2

}

vrrp_sync_groupVG1 {

group {

KEEPALIVED_MYSQL

}

}

vrrp_instanceKEEPALIVED_MYSQL {

# 注意:两台MYSQLserver都设置为BACKUP

stateBACKUP

interface eth0

virtual_router_id 20

#  # MASTER1设置为100,则MASTER2设置为稍低,如:90

priority 100

advert_int 1

# 仅仅有MASTER1设置不抢夺控制权

nopreempt

authentication {

auth_type PASS

auth_pass abcd1234

}

track_script {

check_mysql

}

virtual_ipaddress {

192.168.150.201

}

}

146上面的配置

! Configuration File for keepalived

global_defs {

router_id Mysql-HA

}

#定义MYSQL监控的脚本,每2秒监控一次,详细脚本请见以下

vrrp_scriptcheck_mysql {

script"/root/keepalive/keepalived_check_mysql.sh"

interval 2

}

vrrp_sync_groupVG1 {

group {

KEEPALIVED_MYSQL

}

}

vrrp_instanceKEEPALIVED_MYSQL {

#注意:两台MYSQLserver都设置为BACKUP

stateBACKUP

interface eth0

virtual_router_id 20

#MASTER1设置为100 MASTER2设置为90

priority 90

advert_int 1

authentication {

auth_type PASS

auth_pass abcd1234

}

track_script {

check_mysql

}

virtual_ipaddress {

192.168.150.201

}

}

检查本机MYSQL服务是否正常,假设MYSQL服务不可用,则停止KEEPALIVED服务,由备机的KEEPALIVED接管并提供VIP(指向备机)

/root/keepalive/keepalived_check_mysql.sh代码

[root@rac2 keepalive]# cat /root/keepalive/keepalived_check_mysql.sh

#!/bin/bash

MYSQL=/usr/bin/mysql

MYSQL_HOST=localhost

#MYSQL_USER=root

#MYSQL_PASSWORD=root

LOG_FILE=/root/keepalive/check_mysql.log

CHECK_TIME=3

#mysqlis working MYSQL_OK is 1 , mysql down MYSQL_OK is 0

MYSQL_OK=1

functioncheck_mysql_helth (){

$MYSQL -h $MYSQL_HOST -e "showstatus;" >/dev/null 2>&1

if [ $? = 0 ] ;then

MYSQL_OK=1

else

MYSQL_OK=0

fi

return $MYSQL_OK

}

while [$CHECK_TIME -ne 0 ]

do

let "CHECK_TIME -= 1"

check_mysql_helth

if [ $MYSQL_OK = 1 ] ; then

CHECK_TIME=0

echo `date --date=today +"%Y-%m-%d%H:%M:%S"` -  [INFO] - mysqlavailable: success[$MYSQL_OK] >> $LOG_FILE

exit 0

fi

if [ $MYSQL_OK -eq 0 ] && [$CHECK_TIME -eq 0 ]

then

/etc/init.d/keepalived stop

echo `date --date=today +"%Y-%m-%d%H:%M:%S"` -  [INFO] - mysqlinvaild. keepalived stop. >> $LOG_FILE

exit 1

fi

sleep 1

done

4.2、验证故障转移

配置完毕后。分别启动两台server的mysql和keepalived服务

分别启动MYSQL_DB_MASTER1和MYSQL_DB_MASTER2

详细命令例如以下:

# service mysql start

Starting MySQL.......... SUCCESS!

# service keepalived start

Starting keepalived:                                     [  OK  ]

在MYSQL_DB_MASTER1查看VIP

Ip a

[root@rac1 keepalive]# ip a

1: lo: mtu 16436 qdiscnoqueue

link/loopback00:00:00:00:00:00 brd 00:00:00:00:00:00

inet127.0.0.1/8 scope host lo

inet6 ::1/128scope host

valid_lftforever preferred_lft forever

2: eth0: mtu 1500qdisc pfifo_fast qlen 1000

link/etherbe:0c:3f:74:0f:b8 brd ff:ff:ff:ff:ff:ff

inet192.168.150.145/24 brd 192.168.150.255 scope global eth0

inet 192.168.150.201/32 scope global eth0

inet192.168.150.245/24 brd 192.168.150.255 scope global secondary eth0:2

inet6fe80::bc0c:3fff:fe74:fb8/64 scope link

valid_lftforever preferred_lft forever

3: eth1: mtu 1500qdisc pfifo_fast qlen 1000

link/etherca:d9:c2:ab:89:c8 brd ff:ff:ff:ff:ff:ff

inet10.10.10.145/24 brd 10.10.10.255 scope global eth1

inet6fe80::c8d9:c2ff:feab:89c8/64 scope link

valid_lftforever preferred_lft forever

4: sit0: mtu 1480 qdisc noop

link/sit 0.0.0.0brd 0.0.0.0

210.201 在145 上面

从另外一台机器用vip地址登陆

mysql -h 192.168.150.201  -utest -p

查看时连接那一台机器

mysql> show variables like '%host%'

-> ;

+---------------+-------+

| Variable_name | Value |

+---------------+-------+

| hostname     | rac1  |

+---------------+-------+

1 row in set (0.00 sec)

然后停止rac1上的mysql

依旧查看连接的状态

mysql> show variables like '%host%';

ERROR 2006 (HY000): MySQL server has gone away

No connection. Trying to reconnect...

Connection id:   4274

Current database: *** NONE ***

+---------------+-------+

| Variable_name | Value |

+---------------+-------+

| hostname     | rac2  |

+---------------+-------+

1 row in set (3.09 sec)

mysql>

mysql> show variables like '%host%';

+---------------+-------+

| Variable_name | Value |

+---------------+-------+

| hostname     | rac2  |

+---------------+-------+

1 row in set (0.00 sec)

发现已经转移到mysql_db_master2上面

[root@rac1 keepalive]# service keepalived status

keepalived is stopped

查看keepalive的状态

以及mysql的检查日志

查看日志 [root@rac1 keepalive]# catcheck_mysql.log

2014-11-05 18:29:37 - [INFO] - mysql available:success[1]

2014-11-05 18:29:42 - [INFO] - mysql invaild.keepalived stop.

2014-11-05 18:29:43 - [INFO] - mysql invaild.keepalived stop.

发现服务已经停止

[root@rac2 keepalive]# ip a  在主机2上查看ip情况

1: lo: mtu 16436 qdiscnoqueue

link/loopback00:00:00:00:00:00 brd 00:00:00:00:00:00

inet127.0.0.1/8 scope host lo

inet6 ::1/128scope host

valid_lftforever preferred_lft forever

2: eth0: mtu 1500qdisc pfifo_fast qlen 1000

link/ether42:1c:5e:e1:1c:3e brd ff:ff:ff:ff:ff:ff

inet192.168.150.146/24 brd 192.168.150.255 scope global eth0

inet 192.168.150.201/32 scope global eth0

能够看到VIP(210.201)已经切换到MYSQL_DB_MASTER2

从新启动MYSQL_DB_MASTER1的MYSQL服务和KEEPALIVED服务。可是这个时候是不会从新浮动到MASTER1的。由于我们配置 KEEPALIVED的时候都是配置的BACKUP。并且MASTER1配置了不抢占。

这与我们设计是相符的。(仅仅有等MASTER2出现问题的情况才从新有MASTER1接管)

这样的方式能够避免一台机器出现故障手动切换才干使服务恢复。提高系统的高可用性。

兴许多台双活实验进行中,敬请期待。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/358983.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于Rx-netty和Karyon2的云就绪微服务

Netflix Karyon提供了一个干净的框架来创建可用于云的微服务。 在您的组织中,如果您使用包含Eureka的Netflix OSS堆栈进行服务注册和发现,使用Archaius进行资产管理,那么很可能会使用Karyon创建微服务。 Karyon最近发生了很多变化&#xff0…

中软国际 问题一php的优缺点

PHP的优点:  1. 跨平台,性能优越,跟Linux/Unix结合别跟Windows结合性能强45%,并且和很多免费的平台结合非常省钱,比如LAMP(Linux/Apache/Mysql/PHP)或者FAMP(FreeBSD/Apache/Mysql/PHP)结合,或者数据应用…

vue项目安装less_部署vue项目、安装mongodb

一、node运行环境1、npm install -g n 通过npm 全局安装node2、sudo n 8.16.0 设置node版本Password:install : node-v8.16.0mkdir : /usr/local/n/versions/node/8.16.0fetch : https://nodejs.org/dist/v8.16.0/node-v8.16.0-darwin-x64.tar.gz#############################…

电脑正常启动黑屏,安全模式正常启动的解决办法

今天早上起来,打开电脑,输入账号信息进入后发现是黑屏,本以为电脑卡顿等等看,我看还是黑屏就关机重启了几次发现还是黑屏,然后进入安全模式下发现页面能打开,但是我们都知道安全模式只会加载一些必要的程序…

NHibernate实例化类部分属性

NHibernate 为习惯SQL的开发者提供了接口,将查询的结果转变为持久化对象。虽然该方法不是很提倡。 GetCurrentSession().CreateSQLQuery(sql)参数sql就是实际要执行的sql语句。 如果需要将结果转化为持久换对象,那需要提供对象类型。 GetCurrentSession(…

2.4 万余门在线课程免费开放!大量计算机相关课程.(赶紧收藏)

日前,教育部印发指导意见,面向全国高校免费开放全部优质在线课程和虚拟仿真实验教学资源。 截至 2 月 2 日,教育部组织了 22 个在线课程平台制定了多样化在线教学解决方案,免费开放包括 1291 门国家精品在线开放课程和 401 门国家虚拟仿真实验课程在内的在线课程 2.4 万余门…

osgi和spring区别_OSGI和Spring动态模块–简单的Hello World

osgi和spring区别在此姿势中,我们将采用使用OSGi进行的第一个实现,并使用Spring Dynamic Modules改进应用程序。 Spring动态模块(Spring Dm)使基于OSGi的应用程序的开发更加容易。 这样,服务的部署就容易得多。 您可以…

mysql binary blob区别_SQL中binary 和 varbinary的区别 blob

binary 和 varbinary固定长度 (binary) 的或可变长度 (varbinary) 的 binary 数据类型。binary [ ( n ) ]固定长度的 n 个字节二进制数据。N 必须从 1 到 8,000。存储空间大小为 n4 字节。varbinary [ ( n ) ]n 个字节变长二进制数据。n 必须从 1 到 8,000。存储空间大小为实际…

线上测试bug工具

根据每个公司性质的不同,规模的不同,所用到的bug管理工具也可能不同。你们用的bug管理工具是什么呢? 1. JIRA(付费) IRA的生产者把JIRA定义为Professional Issue Tracker,即它是一个专业的问题跟踪管理的…

关于bolg

云笔记挺好用的,博客不更了。转载于:https://www.cnblogs.com/usedrosee/p/4434618.html

Java Micro Framework:您无法忽略的新趋势

什么是Java微框架,为什么要使用它们? 每种语言都有权衡。 对于Java,要成为一种安全,经过严格测试,向后兼容的语言,就要在敏捷性和精简性方面做出一些牺牲。 毫无疑问,它有一些冗长和冗长的内容…

springboot mysql时区设置_java/springboot/mysql时区问题解决方案

解决步骤:先理清楚逻辑数据从mysql查出-->进入docker(没容器化跳过)-->进入相应的应用程序(比如java或者框架springboot之类的)-->程序处理完输出返回给前端或者页面-->展示第一步:先查mysql所以先进入mysql控制台,select now(),时区没问题则…

无法获取签名信息,请上传有效包(110506)

此篇文章将要介绍安卓App提交应用商店时遇到的两个小问题的相关介绍,具体代码请看下文 陆陆续续做了一个半月左右的「喵呜天气」终于在今天下午成功提交到应用商店(腾讯应用宝)。期间遇到两个小问题,记录如下: 1、上…

工作一个月有感

一年前的自己肯定想不到现在的工作内容,那时候的自己还抱着 effective c,刷着 leetcode,准备实习生面试呢。我一直以为自己毕业后要做 c 服务器端开发,而现在已与当初的想法越走越远了,我把书架上 c 的书收了起来&…

mysql 数据如何存储,MySQL如何存储数据

I looked around google but didnt find any good answers. Does it store the data in one big file? What methods does it use to make data access quicker them just reading and writing to a regular file?解决方案Does it store the data in one big file?Some DBMS…

openshift_红帽Openshift:入门–云中的Java EE6

openshift现在有一段时间,我正在研究“云”。 研究它的功能,它可以做什么,为什么我们应该切换到“云”,进行交谈,与Realmaolmen的云专家maartenballiauw等人交谈。 我已经在Google App Engine(用于Java&…

【APICloud系列|10】最新苹果APP上架App Store流程(超详细)

2018最新整理iOS app上架app详细教程 上架iOS需要一个付费688的开发者账号,还没有的话申请一个或者借用。 申请苹果开发者账号教程 上架App Store之前是先安装到苹果手机测试调试好,app能正常运行再上架

.Net面试经验,从北京到杭州

首先简单说下,本人小本,目前大四软件工程专业,大三阴差阳错地选了.Net方向,也是从大三开始接触.Net。自认为在学生中.net基础还可以,嘿嘿,吹一下。 大四第一学期学校安排去北京培训,培训了两个月…

proxifier访问https错误_教你实现IE访问https网站不出错方法

不同的系统出现的问题是不一样的,有小伙伴在电脑账打开我们的网站的时候发现不能正常的打开我们的电脑出现,是否只查看安全传送的网页内容的错误的提示,那我们遇到这个问题应该怎么处理访问https网站呢,今天小编就来跟大家分享一下…

Gradle入门:集成测试

因为Java项目的标准项目布局仅定义了一个测试目录( src / test ),所以我们没有将集成测试添加到Gradle构建中的标准方法。 如果要使用标准项目布局,则可以使用以下选项之一将集成测试添加到Gradle构建中: 我们可以将…