MariaDB简单主从同步
我的一些业务数据库比较大,虽然服务器配置完全满足业务运行,但当用mysqldump备份单个30GB左右的数据库时还是会IO延迟暴增,导致备份期间WEB短暂卡顿或中断。另外就算本地做RAID,再做异地备份,一旦真的RAID扑街你恢复异地备份也会失去备份间隔的数据。
鉴于此做数据库主从同步,从库仅作备份用就是最靠谱的备份方案了,从库的数据是实时的,异地备份也在从库进行,这样就完全不影响主库业务运行又拥有实时的数据备份,主库挂了还能短时间立即切换到从库恢复业务。
我的一些业务数据库比较大,虽然服务器配置完全满足业务运行,但当用mysqldump备份单个30GB左右的数据库时还是会IO延迟暴增,导致备份期间WEB短暂卡顿或中断。另外就算本地做RAID,再做异地备份,一旦真的RAID扑街你恢复异地备份也会失去备份间隔的数据。
鉴于此做数据库主从同步,从库仅作备份用就是最靠谱的备份方案了,从库的数据是实时的,异地备份也在从库进行,这样就完全不影响主库业务运行又拥有实时的数据备份,主库挂了还能短时间立即切换到从库恢复业务。
我的CEPH OSD因为列阵卡不支持直通是基于RAID0的,最近ceph性能不足,排查过程iostat观察发现有一些盘r_await或w_await持续1000多,这就需要换盘了。ceph存储一份数据如果是默认3副本,那么就会3份副本写完才会完成写入,如果有1个osd延迟很高,就会影响整体写入速度。
首先可以运行 ceph-volume lvm list 查看osd对应的盘符,如果是bcache,则需要再运行lsblk查看在哪个盘符下。然后查看是哪个盘符,以及盘位,进行更换重建。
公司有台10个盘组的RAID10的服务器列阵挂了,坏了3个盘,超过了RAID10的容错,已经无法通过列阵恢复数据了。同时挂3个是很小几率的,所以也有一定可能刚开始挂了1-2个不知道,直到第3个挂了down机了才发现。
因为机器很多,人工每天检查一次会比较耗时,每周检查也许又会太长。所以写了个py小脚本,可以定时1小时检查次,出现故障可以立即通知到技术立即去进一步检查、换盘,避免悲剧发生。
1、安装MegaCLI
# wget https://raw.githubusercontent.com/crazy-zhangcong/tools/master/MegaCli8.07.10.tar.gz && tar -zxf MegaCli8.07.10.tar.gz && cd MegaCli8.07.10/Linux/ && rpm -ivh Lib_Utils-1.00-09.noarch.rpm MegaCli-8.02.21-1.noarch.rpm && ln -s /opt/MegaRAID/MegaCli/MegaCli64 /usr/local/bin/MegaCli && MegaCli -v
body {
padding-right: 0px !important;
}
*.modal-open {
overflow-y: scroll;
padding-right: 0 !important;
}
in_array 函数只针对一维数组,经过简单的构造,就可以查询多维数组。
$arr = array(
array('a', 'b'),
array('c', 'd')
);
in_array('a', $arr); // 此时返回的永远都是 false
deep_in_array('a', $arr); // 此时返回 true 值
function deep_in_array($value, $array) {
foreach($array as $item) {
if(!is_array($item)) {
if ($item == $value) {
return true;
} else {
continue;
}
}
if(in_array($value, $item)) {
return true;
} else if(deep_in_array($value, $item)) {
return true;
}
}
return false;
}
PHP中用foreach()循环中,想要在循环的时候,当满足某个条件时,想要跳出本次循环继续执行下次循环,或者满足某个条件的时候,终止foreach()循环,分别会用到:continue 与 break
$arr= array('le','yang','jun','code','life','a','b','c');
$html= '';
foreach($arr as $key => $value){
if($value == 'a'){
$html.= $value;
}
if($value =='b'){
$html.= $value;
continue;// 当 $value为b时,跳出本次循环
}
if($value =='c'){
$html.= $value;
break;// 当 $value为c时,终止循环
}
//$html.= $value;
}
echo $html; // 输出: abc 系统没有安装python-devel包导致
yum install python-devel.x86_64 可以使用json_decode函数
$object = json_decode($array); //得到的是 object 数据类型。
$array = json_decode($object, ture); //得到的则是数组。
情景:Laravel自带有基于 Eloquent ORM + 查询构造器的 paginate 分页方法非常方便。但我正在进行二次开发,程序查询只基于查询构造器,所以只能使用offset()和limit()实现自定义分页功能。
php从以前到现在一直都是单继承的语言,无法同时从两个基类中继承属性和方法,为了解决这个问题,php出了Trait这个特性
用法:通过在类中使用use 关键字,声明要组合的Trait名称,具体的Trait的声明使用Trait关键词,Trait不能实例化
如下代码实例:
<?php
trait Dog{
public $name="dog";
public function bark(){
echo "This is dog";
}
}
class Animal{
public function eat(){
echo "This is animal eat";
}
}
class Cat extends Animal{
use Dog;
public function drive(){
echo "This is cat drive";
}
}
$cat = new Cat();
$cat->drive();
echo "<br/>";
$cat->eat();
echo "<br/>";
$cat->bark();
?>
输出
本文实例讲述了php计算两个日期相差天数的方法。分享给大家供大家参考。具体实现方法如下:
实例一:
/**
* 求两个日期之间相差的天数
* (针对1970年1月1日之后,求之前可以采用泰勒公式)
* @param string $date1
* @param string $date2
* @return number
*/
function diff_date($date1, $date2){
if($date1>$date2){
$startTime = strtotime($date1);
$endTime = strtotime($date2);
}else{
$startTime = strtotime($date2);
$endTime = strtotime($date1);
}
$diff = $startTime-$endTime;
$day = $diff/86400;
return intval($day);
}
Laravel 5.6 中文文档
http://laravelacademy.org/laravel-docs-5_6
http://laravelacademy.org/post/8900.html
http://laravelacademy.org/post/8851.html
注:想要快速上手?只需要在新安装的 Laravel 应用下运行 php artisan make:auth 和 php artisan migrate,这两个命令会生成用户登录注册所需要的所有东西,然后在浏览器中访问 http://your-app.dev/register 即可。
php artisan make:auth
php artisan migrate
创建用户模块 以及数据库
友情提示:新建的用于登录认证的模型类需要继承 Illuminate\Foundation\Auth\User 基类,不然后面就会出现不能认证的窘况。
use Illuminate\Foundation\Auth\User;
php artisan make:model Admin -m
模型Admin.php(参考app\User.php)