Skip to content
Snippets Groups Projects
Commit ec67c67c authored by lechuck's avatar lechuck Committed by lucha
Browse files

Moved mysql host to tcp and function refactoring

parent f7b8fffc
No related branches found
No related tags found
No related merge requests found
...@@ -6,38 +6,13 @@ $wpdb->max_connections = 30; ...@@ -6,38 +6,13 @@ $wpdb->max_connections = 30;
define("NOBLOGS_BACKEND_CONFIG", "/etc/noblogs/backends"); define("NOBLOGS_BACKEND_CONFIG", "/etc/noblogs/backends");
define("NOBLOGS_MASTER_CONFIG", "/etc/noblogs/master"); define("NOBLOGS_MASTER_CONFIG", "/etc/noblogs/master");
define("NOBLOGS_HOST_FILE", "/etc/noblogs/ip_ring0");
include_once('r2db/db-hash.php'); include_once('r2db/db-hash.php');
include_once('r2db/db-backends.php'); include_once('r2db/db-backends.php');
// Add the global database (configured in wp-config.php), stores the global // Set up global dataset with master databases
// blogs and users tables. noblogs_load_global_dataset(NOBLOGS_MASTER_CONFIG, NOBLOGS_HOST_FILE);
$is_master = __gf_ai_is_master();
$wpdb->add_database(array(
"host" => DB_HOST,
"user" => DB_USER,
"password" => DB_PASSWORD,
"name" => DB_NAME,
"dataset" => "global",
"write" => $is_master, "read" => 1, "timeout" => 2
));
// This is the write-only master.
if (!$is_master) {
$wpdb->add_database(noblogs_load_master(NOBLOGS_MASTER_CONFIG));
}
// Add all the sharded blog databases. // Add all the sharded blog databases.
$wpdb_reverse_backend_map = noblogs_load_backends(NOBLOGS_BACKEND_CONFIG, $wpdb->hash_map); $wpdb_reverse_backend_map = noblogs_load_backends(NOBLOGS_BACKEND_CONFIG, $wpdb->hash_map);
// Ai patch: allows to understand if the current database is the master server
function __gf_ai_is_master() {
$master_dsn = trim(file_get_contents('/etc/noblogs/master'));
preg_match('/@172.16.1.(\d+):/', $master_dsn, $m);
$master_id = $m[1];
if (!empty($_SERVER['SERVER_ADDR']))
return (int) ('172.16.1.'.$master_id == $_SERVER['SERVER_ADDR']);//works on web
return (int) ($master_id == $_SERVER['SERVER_PUBLIC_ID']);//works on cli
}
<?php <?php
function noblogs_split_db($file) {
$db_url = trim(file_get_contents($file));
return parse_url($db_url);
}
function noblogs_load_backends($db_config_file, $hashptr) { function noblogs_load_backends($db_config_file, $hashptr) {
global $wpdb; global $wpdb;
...@@ -35,16 +40,26 @@ function noblogs_load_backends($db_config_file, $hashptr) { ...@@ -35,16 +40,26 @@ function noblogs_load_backends($db_config_file, $hashptr) {
return $backend_map; return $backend_map;
} }
function noblogs_load_master($master_file) { function noblogs_load_global_dataset($master_file, $ip_file) {
$master_url = trim(file_get_contents($master_file)); global $wpdb;
$mdata = parse_url($master_url); $mdata = noblogs_split_db($master_file);
return array( $ldata = trim(file_get_contents($ip_file));
"host" => $mdata["host"] . ":" . $mdata["port"], $globaldb = array(
"user" => $mdata["user"], "host" => $mdata["host"] . ":" . $mdata["port"],
"password" => $mdata["pass"], "user" => $mdata["user"],
"name" => substr($mdata["path"], 1), "password" => $mdata["pass"],
"dataset" => "global", "name" => substr($mdata["path"], 1),
"read" => 0, "write" => 1, "timeout" => 10 "dataset" => "global",
); "read" => 1, "write" => 1, "timeout" => 2
);
if ($mdata['host'] == $ldata) {
$wpdb->add_database($globaldb);
} else {
$globaldb['read'] = 0;
$wpdb->add_database($globaldb);
$globaldb['host'] = $ldata;
$globaldb['read'] = 1;
$globaldb['write'] = 0;
$wpdb->add_database($globaldb);
}
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment