Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Magento có thể sử dụng nhiều nô lệ MySQL không?

Đưa ra nhận xét của bạn ở trên và giả sử rằng bạn đã thiết lập bản sao chính xác Cơ sở dữ liệu của mình.

Giải pháp:-

- Bước 1:

Trong tệp

app / etc / config.xml

Tìm thẻ đóng "core_read"

<resources>
    ....
    <core_read>
            <connection>
                <use>default_read</use>
            </connection>
        </core_read>
    ....
</resources>

Thêm vào Sau thẻ đóng (bao nhiêu là cơ sở dữ liệu bạn muốn sử dụng), nó sẽ giống như bên dưới:

<resources>
    ....
        <core_read>
            <connection>
                <use>default_read</use>
            </connection>
        </core_read>
        <slave_db_1>
            <connection>
                <use>slave_one_db</use>
            </connection>
        </slave_db_1>
        <slave_db_2>
            <connection>
                <use>slave_two_db</use>
            </connection>
        </slave_db_2>
    ....
</resources>

- Bước 2:

Và thêm kết nối mới trong apt / etc / local.xml của bạn sau ("/ default_setup> " thẻ đóng)

<resources>
    ....            
        <slave_one_db>
            <connection>
                <host><![CDATA[localhost]]></host>
                <username><![CDATA[slave_one_db_user]]></username>
                <password><![CDATA[slave_one_db_password]]></password>
                <dbname><![CDATA[slave_db_one_name]]></dbname>
                <initStatements><![CDATA[SET NAMES utf8]]></initStatements>
                <model><![CDATA[mysql4]]></model>
                <type><![CDATA[pdo_mysql]]></type>
                <pdoType><![CDATA[]]></pdoType>
                <active>1</active>
            </connection>
        </slave_one_db>
        <slave_two_db>
            <connection>
                <host><![CDATA[localhost]]></host>
                <username><![CDATA[slave_tow_db_user]]></username>
                <password><![CDATA[slave_tow_db_password]]></password>
                <dbname><![CDATA[slave_db_one_tow]]></dbname>
                <initStatements><![CDATA[SET NAMES utf8]]></initStatements>
                <model><![CDATA[mysql4]]></model>
                <type><![CDATA[pdo_mysql]]></type>
                <pdoType><![CDATA[]]></pdoType>
                <active>1</active>
            </connection>
        </slave_two_db>
    ....
</resources>

- Bước 3:

Sao chép tệp từ "app / code / core / Mage / Core / Model / Resource.php" ==TO ==> "app / code / local / Mage / Core / Model / Resource.php"

1- Tìm $ _mappedTableNames được bảo vệ;

2- Thêm phương thức này bên dưới:

public function getSlaveDb()
{
    $prefix = 'slave_db_'; // prefix for the slaves databased in the xml file
    $cookieExpireTime = 1209600; // 2 weeks Cookie ( database selection ) expire time
    $dbArray = array(1,2); // All slaves Db in-case the cookie has invalid value
    $slaveDb = array_rand( array_flip($dbArray),1 ); // How to alternate between databases ( in this demo i just use 2 database ) adjust the selection of the database to fit hoe many database you want to use !
    if(!isset($_COOKIE['read_db']) || !in_array($_COOKIE['read_db'],$dbArray)) // Check for the cookie values
    {
        setcookie("read_db", $slaveDb, time()+$cookieExpireTime); // set the current database to the user in cookie so next time user use same connection to database ! to avoid jumping or hopping on different databases in short time
    }else{
        $slaveDb = $_COOKIE['read_db']; // return the database selected if the user has it in the cookies
    }
    return $prefix.$slaveDb;
}

3- Sửa đổi phương thức "public function getConnection ($ name)" để trông giống như bên dưới:

public function getConnection($name)
{
    if($name =='core_read') // Only applied for READ Connections !!!
    {
        $name = $this->getSlaveDb(); // change the name of the connection to the one we get from our main method
    }
    //....... Leave the rest of the function as it is !!
}

Điều này sẽ cho phép bạn sử dụng bao nhiêu cơ sở dữ liệu bạn chỉ định trong XML và PHP CODE cho kết nối core_read và kết nối default_setup cho tất cả các kết nối khác trong magento (core_write, core_setup)

Hy vọng điều này giải quyết được vấn đề của bạn.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tôi có thể sử dụng một câu lệnh được chuẩn bị sẵn bởi PDO để liên kết một số nhận dạng (một bảng hoặc tên trường) hoặc một từ khóa cú pháp không?

  2. chèn có điều kiện mysql - nếu không tồn tại chèn

  3. Thứ tự MySQL theo trường trong Eloquent

  4. Làm cách nào để cài đặt bộ điều hợp Rails MySQL?

  5. MySQL thêm các trường vào Enum